Я пытаюсь разделить один столбец datefield
на три целевых столбца, в зависимости от столбца status
:
Мой table1
выглядит следующим образом:
**id status DateField**
1 A 1/5/2018
2 B 1/6/2018
3 C 1/7/2018
ИтакЯ пытаюсь преобразовать эти данные в следующий формат (отслеживание меток времени, когда идентификатор вошел в определенную стадию)
id Timestamp_A Timestamp_B Timestamp_C
1 1/5/2018 Null Null
2. Null 1/6/2018 Null
3. Null Null 1/7/2018
Я использовал следующий запрос для получения желаемых результатов
SELECT id, status,
CAST( DATEFIELD AS DATE) AS "Timestamp_A",
CAST(NULL AS DATE) AS "Timestamp_B",
CAST(NULL AS DATE) AS "Timestamp_C"
FROM table 1
WHERE status='A'
UNION ALL
SELECT id, status,
CAST( DATEFIELD AS DATE) AS "Timestamp_B",
CAST(NULL AS DATE) AS "Timestamp_A",
CAST(NULL AS DATE) AS "Timestamp_C"
FROM table 1
WHERE status='B'
UNION ALL
SELECT id, status,
CAST( DATEFIELD AS DATE) AS "Timestamp_C",
CAST(NULL AS DATE) AS "Timestamp_A",
CAST(NULL AS DATE) AS "Timestamp_B"
FROM table 1
WHERE status='C'
Хотя каждый запрос работает индивидуально, при использовании UNION ALL только первый запрос, по-видимому, работает в отношении полей даты, т. Е. Только Timestamp_A заполняется правильными значениями, в то время как метки времени B и C являются пустыми.
id Timestamp_A Timestamp_B Timestamp_C
1 1/5/2018 Null Null
2. Null Null Null
3. Null Null Null
Любой вклад или направление, почему это происходит?