SQL-запрос должен возвращать основную запись и вспомогательные записи - PullRequest
1 голос
/ 08 ноября 2010

Позвольте мне описать это как можно лучше, это касается SQL Server.

Существует главная таблица с одной записью на участника, есть дополнительная таблица с количеством записей не более 5 на участника.

Мне нужно иметь возможность вернуть ВСЕ записи в основной таблицевместе с записями вложенной таблицы для каждого участника в пределах одной и той же записи в запросе SELECT.

Пример:

Main Table:
   Participant_ID,
   Program
Sub Table:
   Participant_ID,
   Skill_Set_ID,
   Rating

SQL Query results:
    Participant_ID, Program, Skill_Set_ID_1, Rating_1, Skill_Set_ID_2, Rating_2, Skill_Set_ID_3, Rating_3, Skill_Set_ID_4, Rating_4, Skill_Set_ID_5, Rating_5

Идея в основном строк в столбцы.

Как получитьэто сделано?Я в полной растерянности

Ответы [ 3 ]

1 голос
/ 08 ноября 2010
select mt.Participant_ID, mt.Program, 
       st1.Skill_Set_ID as Skill_Set_ID_1, st1.Rating as Rating_1, 
       st2.Skill_Set_ID as Skill_Set_ID_2, st2.Rating as Rating_2, 
       st3.Skill_Set_ID as Skill_Set_ID_3, st3.Rating as Rating_3, 
       st4.Skill_Set_ID as Skill_Set_ID_4, st4.Rating as Rating_4, 
       st5.Skill_Set_ID as Skill_Set_ID_5, st5.Rating as Rating_5, st5.Skill_Text
       st6.Skill_Set_ID as Skill_Set_ID_6, st6.Rating as Rating_6, st6.Skill_Text
       st7.Skill_Set_ID as Skill_Set_ID_7, st5.Rating as Rating_7, st7.Skill_Text
    from main_table mt
        left join sub_table st1
            on mt.Participant_ID = st1.Paticipant_ID
                and st1.Skill_Set_ID = 1
        left join sub_table st2
            on mt.Participant_ID = st2.Paticipant_ID
                and st2.Skill_Set_ID = 2
        left join sub_table st3
            on mt.Participant_ID = st3.Paticipant_ID
                and st3.Skill_Set_ID = 3
        left join sub_table st4
            on mt.Participant_ID = st4.Paticipant_ID
                and st4.Skill_Set_ID = 4
        left join sub_table st5
            on mt.Participant_ID = st5.Paticipant_ID
                and st5.Skill_Set_ID = 5
                and st5.Skill_Text = 'Skill A'
        left join sub_table st6
            on mt.Participant_ID = st6.Paticipant_ID
                and st6.Skill_Set_ID = 5
                and st6.Skill_Text = 'Skill B'
        left join sub_table st7
            on mt.Participant_ID = st7.Paticipant_ID
                and st7.Skill_Set_ID = 5
                and st7.Skill_Text = 'Skill C'
0 голосов
/ 08 ноября 2010

Здесь нужно сделать разворот.Но проблема в вашем случае заключается в том, что вам нужно развернуть несколько столбцов.Я надеюсь, что это указывает на правильное направление Несколько столбцов в T-SQL

0 голосов
/ 08 ноября 2010
SELECT *
FROM Main_Table, Sub_Table
WHERE Main_Table.Participant_ID = Sub_Table.Participant_ID;

Использует ли SQL Server стандартный SQL?

...