Объединение Mutliple Rows Back в один с отдельными полевыми маркерами - PullRequest
0 голосов
/ 23 февраля 2020

Я сделал соединение, которое (правильно) продублировало определенные строки, которые имеют несколько совпадений. Мои данные выглядят следующим образом (после объединения)

Job_ID    ....[MULTIPLE COLUMNS HERE]....  final_sub_team
----------------------------------------------------------
001                                        TEAM1
001                                        TEAM2
002                                        TEAM1
003                                        TEAM4

Я хочу объединить эти строки следующим образом

Job_ID    ....[MULTIPLE COLUMNS HERE]....  Team1    Team2    Team3    Team4
---------------------------------------------------------------------------
001                                        Yes      Yes      No       No
002                                        Yes      No       No       No
003                                        No       No      No       Yes

Я пробовал следующее:

 select 
     job_id, 
     Team1 = (select case when final_sub_team = 'Team1' then 'Yes' else 'No' end),
     Team2 = (select case when final_sub_team = 'Team2' then 'Yes' else 'No' end),
     Team3 = (select case when final_sub_team = 'Team3' then 'Yes' else 'No' end),
     Team4 = (select case when final_sub_team = 'Team4' then 'Yes' else 'No' end)
 from 
     AllJobs
 group by 
     Job_id

Но это возвращает ошибку:

Столбец 'AllJobs.Final_Sub_Team' недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

Так что я ищу некоторую помощь, чтобы сделать это.

1 Ответ

0 голосов
/ 23 февраля 2020

Использовать условное агрегирование:

select job_id ,
       Team1 = max(case when final_sub_team = 'Team1' then 'Yes' else 'No' end),
       Team2 = max(case when final_sub_team = 'Team2' then 'Yes' else 'No' end),
       Team3 = max(case when final_sub_team = 'Team3' then 'Yes' else 'No' end),
       Team4 = max(case when final_sub_team = 'Team4' then 'Yes' else 'No' end)
 from AllJobs
 group by Job_id;

Это работает, потому что 'Yes'> 'No', потому что строки сравниваются в алфавитном порядке. Более типично, я бы рекомендовал использовать 1 для да и 0 для нет.

...