Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Kopelly Member Откуда: Красноярск Сообщений: 289 |
А что должно получится из последней строки? |
||
19 фев 18, 10:53 [21201100] Ответить | Цитировать Сообщить модератору |
Kopelly Member Откуда: Красноярск Сообщений: 289 |
U_rtqwec, Рискну предположить что используешь CASE для обоих полей, проверяя для одного результирующего поля условие с ACCD, для другого - ACCC. Переведи оба CASE на одно условие... |
19 фев 18, 11:08 [21201168] Ответить | Цитировать Сообщить модератору |
U_rtqwec Member Откуда: Сообщений: 55 |
Ребята, всем спасибо, вы мне очень помогли, составил вот такой запрос, кажется то что нужно 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] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
U_rtqwec, условия дублировать не надо, case выйдет по первому вхождению |
19 фев 18, 11:24 [21201229] Ответить | Цитировать Сообщить модератору |
U_rtqwec Member Откуда: Сообщений: 55 |
Так первое вхождение для поля ALL20202, а второе немного измененное для ABC |
||
19 фев 18, 11:33 [21201281] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
U_rtqwec, NOT LIKE в CASE не нужен для таких условий |
19 фев 18, 11:40 [21201305] Ответить | Цитировать Сообщить модератору |
U_rtqwec Member Откуда: Сообщений: 55 |
Точно, спасибо! |
||
19 фев 18, 12:04 [21201367] Ответить | Цитировать Сообщить модератору |
Andy_OLAP Member Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион Сообщений: 3151 |
Инкассацию считаете? Советую потом полученные цифры показать не только главе УКО, но и главбуху, потому что ТЗ обычно пишет один человек, а цифры полученные анализирует другой - и у них несколько разные "представления о прекрасном"... |
||
19 фев 18, 12:10 [21201393] Ответить | Цитировать Сообщить модератору |
U_rtqwec Member Откуда: Сообщений: 55 |
Нет, это выгрузки между АБС, там все гораздо печальнее. |
||||
19 фев 18, 12:18 [21201422] Ответить | Цитировать Сообщить модератору |
Andy_OLAP Member Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион Сообщений: 3151 |
А, точно, у Вас же попытка соскочить с диасофта. В любом случае на каждый чих подключайте хотя бы зама главбуха. А иначе цифры потом пойдут по таблицам и не отыщите, откуда они начали не так считаться. |
||||
19 фев 18, 12:33 [21201489] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |