Как объединить данные нескольких строк в одну результирующую запись в Oracle? - PullRequest
0 голосов
/ 07 декабря 2018

Ниже приведен простой результат для DBT_C_MT_MSG_DET

PROD_REF_ID SUB_FLD TAG_NO  TAG_VAL_1

GF41800427  1       32A     24-Oct-2018
GF41800427  2       32A     SGD
GF41800427  3       32A     7829.43

Комбинируя его с другими таблицами и условиями и всем, мне нужно поместить TAG_VAL_1 один за другим для perticular PROD_REF_ID на основе значения SUB_FLD.

Желаемый результат:

PROD_REF_ID TAG_NO  Date            Currency    Amount

GF41800427  32A     24-Oct-2018     SGD         7829.43

Я попытался использовать ниже как часть выбора, но затем я получаю 3 записи с двумя другими как ноль:

  case when sub_fld = 1 then tag_val_1 end as tag32A_Date,
  case when sub_fld = 2 then tag_val_1 end as tag32A_Curr,
  case when sub_fld = 3 then tag_val_1 end as tag32A_Amt,

неожиданноРезультат:

TAG32A_DATE     TAG32A_CURR     TAG32A_AMT  PROD_REF_ID

24-Oct-2018                                 GF41800427  
                SGD                         GF41800427  
                                7829.43     GF41800427  

Просьба предложить.

1 Ответ

0 голосов
/ 07 декабря 2018

Вам нужно использовать агрегатную функцию, такую ​​как max () или min ()

select PROD_REF_ID,
max(case when sub_fld = 1 then tag_val_1 end) as tag32A_Date,
max(case when sub_fld = 2 then tag_val_1 end) as tag32A_Curr,
max(case when sub_fld = 3 then tag_val_1 end) as tag32A_Amt
from tablename 
group by PROD_REF_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...