SQL объединяет строки по идентификатору, сохраняя информацию - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь найти способ объединить разные строки на основе идентификационного номера.

Вот пример набора строк:

ID   |status     |Time
12345|  4        | 1:23
12345|  2        | 2:30
12345|  6        | 2:40
12345|  9        | 3:00

Идентификаторы одинаковы дляэто так, я бы хотел как-то сгруппировать их, но у меня все еще есть индивидуальное время для каждого статуса.Что я думаю, что-то вроде этого:

ID   | Status 2 | Status 2 Time | Status 4  | Status 4 time | etc
12345| 2        | 2:30          | 4         | 1:23          | etc

Возможно ли это вообще?Если есть другой способ подключения этих идентификаторов, это было бы проще, и это было бы здорово.Спасибо!

1 Ответ

0 голосов
/ 25 апреля 2018

Таким образом, это будет сводить ваши данные, когда доступные статусы будут только в наборе 4,2,6 или 9. Если вы не знаете, какие значения в этом столбце, вам нужно построить и выполнить сводку какдинамический sql.Есть примеры этого в переполнении стека.

-------------------------
--test data schema
DECLARE @tempdata as TABLE(ID int, [status] int, [time] time)
insert into @tempdata values

(12345, 4, '1:23'),
(12345, 2, '2:30'),
(12345, 6, '2:40'),
(12345, 9, '3:00'),
-- some extra data to show what happens with another id
(12346, 4, '6:23'),
(12346, 2, '7:30'),
(12346, 6, '7:40'),
(12346, 9, '8:00')

-------------------------
--The query
SELECT *
FROM
    (SELECT * FROM @tempdata) t
PIVOT
    (MIN([time])
    FOR [status] in ([4],[2],[6],[9])) as pvt
...