У меня есть таблица, которая имеет три столбца: идентификатор, дата, группа. Для каждого уникального идентификатора есть две строки (где Group = 1 или где Group = 2). Как я могу объединить их в таблицу с одной строкой на идентификатор и значения даты, отсортированные по двум столбцам?

Я имею:

ID      Date        Group
123456  12/7/2016   1
123456  12/3/2016   2
789654  11/8/2016   1
789654  12/1/2016   2

Я хочу:

ID      Date1       Date2
123456  12/7/2016   12/3/2016
789654  11/8/2016   12/1/2016

Это для Sybase 12, если это имеет значение.

2 ответа2

1

Вы также можете сделать это, используя только две таблицы в предложении from:

select a.ID, a.Date as Date1, b.Date as Date2
from mytable a, mytable b
where a.ID=B.ID
and a.Group=1
and b.Group=2
1
SELECT DISTINCT 
    s.ID,
    s1.[Date] AS Date1,
    s2.[Date] AS Date2
FROM @SomeTable s
LEFT JOIN @SomeTable s1 ON s.ID = s1.ID AND s1.[Group] = 1
LEFT JOIN @SomeTable s2 ON s.ID = s2.ID AND s2.[Group] = 2

или же

SELECT DISTINCT
    s.ID,
    (SELECT [Date] FROM @SomeTable s1 WHERE s1.ID = s.ID AND s1.[Group] = 1) AS Date1,
    (SELECT [Date] FROM @SomeTable s2 WHERE s2.ID = s.ID AND s2.[Group] = 2) AS Date2
FROM @SomeTable s

первые два способа, которые приходят на ум. Оба предполагают, что для каждой комбинации ID/ группы существует только одна запись.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .