SQL объединяет отдельные метки времени в 1 строку на серийный номер - PullRequest
0 голосов
/ 30 января 2019

У меня есть таблицаA со столбцами SerialNumber (целое число), LineNumber (целое число), SectionNumber (целое число) и TimeComplete (Datetime).Эта таблица отслеживает, когда продукт с серийным номером x будет завершен на любой данной станции в любой данной строке.Сейчас я пытаюсь создать запрос, который будет показывать, когда какая-либо станция была завершена для любого заданного серийного номера, но проблема в том, что я получаю позицию на каждый завершенный раздел.Я хочу, чтобы выходные данные представляли собой одну строку с серийным номером, а затем отметку времени каждого раздела.

Current output
SerialNumber   Station1    Station2   Station3   Station4
123            TimeStamp   null       null       null
123            null        timestamp  null       null
123            null        null       timestamp  null
123            null        null       null       timestamp

Desired output
SerialNumber  Station1    Station2   Station3   Station4
123           TimeStamp   Timestamp  Timestamp  Timestamp

Текущий запрос sql

SELECT
distinct
tableA.Serial,
case when tableA.Section = 4 then tableA.TimeComplete
end as 'Station1',
case when tableA.Section = 5 then tableA.TimeComplete
end as 'Station2',
case when tableA.Section = 2 then tableA.TimeComplete
end as 'Station3',
case when tableA.Section = 6 then tableA.TimeComplete
end as 'Station4',
FROM tableA

1 Ответ

0 голосов
/ 30 января 2019

Вы можете сделать агрегацию:

SELECT Serial
       MAX(case when Section = 4 then TimeComplete end) as 'Station1',
       MAX(case when Section = 5 then TimeComplete end) as 'Station2',
       MAX(case when Section = 2 then TimeComplete end) as 'Station3',
       MAX(case when Section = 6 then TimeComplete end) as 'Station4'
FROM tableA AS a
GROUP BY Serial;
...