#sql
Вопрос:
Я использую приведенный ниже запрос для извлечения группы кодов по идентификатору родителя и просто хочу добавить столбец, идентифицирующий каждую группу, к которой принадлежит каждая, чтобы я мог легко использовать его для вывода данных…
select
s.DATE, p.NBR, p.parent_id
from table_a, batch_table p
WHERE p.parent_id in
--GROUP1
('1234'
,'9876'
--GROUP2
,'2345'
,'4567'
--GROUP3
,'3000'
,'7896'
and p._nbr=s._nbr
В настоящее время выглядит так
S.date p,nbr p.parent ID
20210518 92 1234
20210518 92 9876
20210518 92 3000
20210518 92 2345
Хотелось бы, чтобы это
S.date p,nbr p.parent ID **PARENTGROUP**
20210518 92 1234 **GROUP1**
20210518 92 9876 **GROUP1**
20210518 92 3000 **GROUP3**
20210518 92 2345 **GROUP2**
Комментарии:
1. В этом нет никакого смысла. Почему вы используете декартово произведение?
Ответ №1:
Вы можете использовать case statement
:
select s.DATE, p.NBR, p.parent_id
, case when parent_id in ('1234','9876') then 'Group 1'
when parent_id in ('2345','4567') then 'Group 2'
when parent_id in ('3000','7896') then 'Group 3'
end as PARENTGROUP
from table_a s
join batch_table p on p._nbr=s._nbr
WHERE p.parent_id in ('1234','9876','2345','4567','3000','7896')
также всегда используйте явное соединение