Итак, у меня есть процесс, в котором я вменяю / заменяю данные при загрузке из CSV / XML.Всякий раз, когда значение «вменяется» / «подставляется», я отмечаю исходное (недействительное) значение кодом 'IMP' в столбце DATA_CODE .Затем я вставляю «вмененное» (или «замещенное») значение с кодом «ORG» в столбец DATA_CODE .Ниже приведены некоторые примеры данных:
VALUE HOUR HOUR_NUM CONT TYPE DATA_CODE
777 09-SEP-18 02:00:00 PM 1 SMP SUM ORG
-48 09-SEP-18 02:00:00 PM 1 SMP SUM IMP
99 09-SEP-18 03:00:00 PM 2 SMP SUM ORG
0 09-SEP-18 04:00:00 PM 3 SMP SUM ORG
94181 09-SEP-18 05:00:00 PM 4 SMP SUM IMP
842 09-SEP-18 05:00:00 PM 4 SMP SUM ORG
null 09-SEP-18 06:00:00 PM 5 SMP SUM IMP
842 09-SEP-18 06:00:00 PM 5 SMP SUM ORG
Мне нужно представление, похожее на приведенное ниже:
HOUR HOUR_NUM CONT TYPE IMPUTED_VAL ORIG_VAL
09-SEP-18 02:00:00 PM 1 SMP SUM 777 -48
09-SEP-18 03:00:00 PM 2 SMP SUM null 99
09-SEP-18 04:00:00 PM 3 SMP SUM null 0
09-SEP-18 05:00:00 PM 4 SMP SUM 842 94181
09-SEP-18 06:00:00 PM 5 SMP SUM 842 null
Я пробовал следующее:
select HOUR
, HOUR_NUM
, CONT
, TYPE
, MAX(CASE WHEN (data_code IN ('IMP', 'SUB') AND TYPE <> 'FAKE')
THEN value
ELSE null
END) AS IMPUTED_VALUE
, MAX(CASE WHEN (data_code NOT IN ('IMP', 'SUB') OR data_code is null OR TYPE = 'FAKE')
THEN value
ELSE null
END) AS ORIG_VAL
FROM Table1
GROUP BY HOUR, HOUR_NUM, CONT, TYPE;
Однако я возвращаю результаты, в которых переключены IMPUTED_VAL и ORIG_VAL.Даже когда я переключаю логику для двух столбцов, я все равно получаю следующие результаты:
HOUR HOUR_NUM CONT TYPE IMPUTED_VAL ORIG_VAL
09-SEP-18 02:00:00 PM 1 SMP SUM -48 777
09-SEP-18 03:00:00 PM 2 SMP SUM null 99
09-SEP-18 04:00:00 PM 3 SMP SUM null 0
Не уверен, достаточно ли этой информации, но думал, что не помешает связаться, поскольку я застрялна это уже довольно давно.
Заранее спасибо!