Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Упорядочить столбцы  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
Есть вот такой набор данных

ACCD                 ACCC
-------------------- --------------------
40702810700000001202 20202810300000000000
40702810300000000111 20202810300000000000
20202810300000000000 30102810500000000000
20202810300000000000 40702810900000001204
20202810300000000000 20202810700002222222


Нужно получить вот такой результат
ACCD                 ACCC                          ALL20202                ABC
-------------------- --------------------          --------------------    --------------------
40702810700000001202 20202810300000000000          20202810300000000000    40702810700000001202 
40702810300000000111 20202810300000000000          20202810300000000000    40702810300000000111 
20202810300000000000 30102810500000000000          20202810300000000000    30102810500000000000          
20202810300000000000 40702810900000001204          20202810300000000000    40702810900000001204          
20202810300000000000 20202810700002222222          20202810300000000000    20202810700002222222          


То есть в поле ALL20202 вывести номера, начинающиеся на 20202, в поле ABC соответственно другой номер.
Пробовал использовать конструкцию
CASE  SUBSTRING(p.ACCD, 1, 3)
   WHEN '202' THEN p.ACCC
       else p.ACCD
END


В принципе работает, но не отрабатывает для последней строки, где по обе стороны 20202, эту строку просто дублирует.
19 фев 18, 10:39    [21201013]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
U_rtqwec,
CASE  
	WHEN p.ACCD LIKE '20202%' AND p.ACCD LIKE '20202%' THEN p.ACCD
	WHEN p.ACCD LIKE '20202%' THEN p.ACCC	
	ELSE p.ACCD
END as ABC
19 фев 18, 10:53    [21201098]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
U_rtqwec
В принципе работает, но не отрабатывает для последней строки, где по обе стороны 20202, эту строку просто дублирует.

А что должно получится из последней строки?
19 фев 18, 10:53    [21201100]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
U_rtqwec,

Рискну предположить что используешь CASE для обоих полей, проверяя для одного результирующего поля условие с ACCD, для другого - ACCC. Переведи оба CASE на одно условие...
19 фев 18, 11:08    [21201168]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
TaPaK
U_rtqwec,
CASE  
	WHEN p.ACCD LIKE '20202%' AND p.ACCD LIKE '20202%' THEN p.ACCD
	WHEN p.ACCD LIKE '20202%' THEN p.ACCC	
	ELSE p.ACCD
END as ABC


Ребята, всем спасибо, вы мне очень помогли, составил вот такой запрос, кажется то что нужно

CASE  
		WHEN p.ACCD LIKE '20202%' and p.ACCC LIKE '20202%' THEN p.ACCD
		WHEN p.ACCD LIKE '20202%' and pACCC NOT LIKE '20202%' THEN p.ACCD
	     WHEN p.ACCD NOT LIKE '20202%' and p.ACCC LIKE '20202%' THEN p.ACCC
	 END as ALL20202,
	  CASE  
		WHEN p.ACCD LIKE '20202%' and p.ACCC LIKE '20202%' THEN p.ACCC
		WHEN p.ACCD LIKE '20202%' and p.ACCC NOT LIKE '20202%' THEN p.ACCC
	     WHEN p.ACCD NOT LIKE '20202%' and p.ACCC LIKE '20202%' THEN p.ACCD
	 END as ABC,
19 фев 18, 11:20    [21201213]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
U_rtqwec,

условия дублировать не надо, case выйдет по первому вхождению
19 фев 18, 11:24    [21201229]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
TaPaK
U_rtqwec,

условия дублировать не надо, case выйдет по первому вхождению


Так первое вхождение для поля ALL20202, а второе немного измененное для ABC
19 фев 18, 11:33    [21201281]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
U_rtqwec,

NOT LIKE в CASE не нужен для таких условий
19 фев 18, 11:40    [21201305]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
TaPaK
U_rtqwec,

NOT LIKE в CASE не нужен для таких условий


Точно, спасибо!
19 фев 18, 12:04    [21201367]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
U_rtqwec
В принципе работает, но не отрабатывает для последней строки, где по обе стороны 20202, эту строку просто дублирует.

Инкассацию считаете? Советую потом полученные цифры показать не только главе УКО, но и главбуху, потому что ТЗ обычно пишет один человек, а цифры полученные анализирует другой - и у них несколько разные "представления о прекрасном"...
19 фев 18, 12:10    [21201393]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
U_rtqwec
Member

Откуда:
Сообщений: 55
Andy_OLAP
U_rtqwec
В принципе работает, но не отрабатывает для последней строки, где по обе стороны 20202, эту строку просто дублирует.

Инкассацию считаете? Советую потом полученные цифры показать не только главе УКО, но и главбуху, потому что ТЗ обычно пишет один человек, а цифры полученные анализирует другой - и у них несколько разные "представления о прекрасном"...

Нет, это выгрузки между АБС, там все гораздо печальнее.
19 фев 18, 12:18    [21201422]     Ответить | Цитировать Сообщить модератору
 Re: Упорядочить столбцы  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
U_rtqwec
Andy_OLAP
пропущено...

Инкассацию считаете? Советую потом полученные цифры показать не только главе УКО, но и главбуху, потому что ТЗ обычно пишет один человек, а цифры полученные анализирует другой - и у них несколько разные "представления о прекрасном"...

Нет, это выгрузки между АБС, там все гораздо печальнее.

А, точно, у Вас же попытка соскочить с диасофта. В любом случае на каждый чих подключайте хотя бы зама главбуха. А иначе цифры потом пойдут по таблицам и не отыщите, откуда они начали не так считаться.
19 фев 18, 12:33    [21201489]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить