我想在两种情况下获得DESC_TXT
:
当STEP_NAM
= GCP
时-我想要第二次出现的DESC_TXT
,即TR/VR/NF
(第三行)
当STEP_NAM
= CA
时-我希望第一次出现DESC_TXT
,即QS/SC/S
(第四行)
TR_NUM RN_REF_CD DESC_TXT TRN_DTTM STEP_NAM
22938243 20180106-0220 null 1/6/2018 19:35 CF
22954518 20180106-0220 IT/SI/WS 1/8/2018 18:32 GCP
22957994 20180106-0220 TR/VR/NF 1/9/2018 10:05 GCP
22958126 20180106-0220 QS/SC/S 1/9/2018 10:08 CA
22958125 20180106-0220 QS/SC/S 1/9/2018 10:08 CA
22958135 20180106-0220 QS/SC/S 1/9/2018 10:08 GCP
22958136 20180106-0220 QS/SC/S 1/9/2018 10:08 GCP
22958140 20180106-0220 QS/SC/S 1/9/2018 10:08 SBP
22959829 20180106-0220 QS/SC/S 1/9/2018 11:14 SBP
22959827 20180106-0220 QS/SC/S 1/9/2018 11:14 SBP
22959828 20180106-0220 QS/SC/S 1/9/2018 11:14 SBP
22959830 20180106-0220 QS/SC/S 1/9/2018 11:14 SBP
22959873 20180106-0220 QS/SC/S 1/9/2018 11:15 OIP
22959936 20180106-0220 QS/SC/S 1/9/2018 11:17 SBP
22959945 20180106-0220 QS/SC/S 1/9/2018 11:17 OIP
22959956 20180106-0220 QS/SC/S 1/9/2018 11:18 SBP
22959955 20180106-0220 QS/SC/S 1/9/2018 11:18 SBP
22959953 20180106-0220 QS/SC/S 1/9/2018 11:18 SBP
22959954 20180106-0220 QS/SC/S 1/9/2018 11:18 SBP
22960468 20180106-0220 null 1/9/2018 11:39 ERA
22964031 20180106-0220 null 1/9/2018 14:59 SBP
22964032 20180106-0220 null 1/9/2018 14:59 SBP
22964033 20180106-0220 null 1/9/2018 14:59 SBP
22964029 20180106-0220 null 1/9/2018 14:59 OSI
22964030 20180106-0220 null 1/9/2018 14:59 SBP
数据集由〜TRN_DTTM排序
最终输出为-像这样:
RN_REF_CD DESC_TXT1 DESC_TXT2
20180106-0220 TR/VR/NF QS/SC/S
,并希望对每个RN_REF_CD
重复此操作。
答案 0 :(得分:1)
with s (tr_num, rn_ref_cd, desc_txt, trn_dttm, step_nam) as (
select 22938243, '20180106-0220', null , to_date('1/6/2018 19:35', 'mm/dd/yyyy hh24:mi'), 'CF' from dual union all
select 22954518, '20180106-0220', 'IT/SI/WS', to_date('1/8/2018 18:32', 'mm/dd/yyyy hh24:mi'), 'GCP' from dual union all
select 22957994, '20180106-0220', 'TR/VR/NF', to_date('1/9/2018 10:05', 'mm/dd/yyyy hh24:mi'), 'GCP' from dual union all
select 22958126, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 10:08', 'mm/dd/yyyy hh24:mi'), 'CA' from dual union all
select 22958125, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 10:08', 'mm/dd/yyyy hh24:mi'), 'CA' from dual union all
select 22958135, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 10:08', 'mm/dd/yyyy hh24:mi'), 'GCP' from dual union all
select 22958136, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 10:08', 'mm/dd/yyyy hh24:mi'), 'GCP' from dual union all
select 22958140, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 10:08', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959829, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:14', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959827, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:14', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959828, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:14', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959830, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:14', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959873, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:15', 'mm/dd/yyyy hh24:mi'), 'OIP' from dual union all
select 22959936, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:17', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959945, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:17', 'mm/dd/yyyy hh24:mi'), 'OIP' from dual union all
select 22959956, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:18', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959955, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:18', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959953, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:18', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22959954, '20180106-0220', 'QS/SC/S' , to_date('1/9/2018 11:18', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22960468, '20180106-0220', null , to_date('1/9/2018 11:39', 'mm/dd/yyyy hh24:mi'), 'ERA' from dual union all
select 22964031, '20180106-0220', null , to_date('1/9/2018 14:59', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22964032, '20180106-0220', null , to_date('1/9/2018 14:59', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22964033, '20180106-0220', null , to_date('1/9/2018 14:59', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual union all
select 22964029, '20180106-0220', null , to_date('1/9/2018 14:59', 'mm/dd/yyyy hh24:mi'), 'OSI' from dual union all
select 22964030, '20180106-0220', null , to_date('1/9/2018 14:59', 'mm/dd/yyyy hh24:mi'), 'SBP' from dual)
select rn_ref_cd,
max(case when rn = 2 and step_nam = 'GCP' then desc_txt end) desc_txt1,
max(case when rn = 1 and step_nam = 'CA' then desc_txt end) desc_txt2
from
(select rn_ref_cd, desc_txt, step_nam,
row_number() over (partition by rn_ref_cd, step_nam order by trn_dttm) rn
from s
)
group by rn_ref_cd;
RN_REF_CD DESC_TXT DESC_TXT
------------- -------- --------
20180106-0220 TR/VR/NF QS/SC/S
答案 1 :(得分:0)
**能够通过此查询获取数据,希望对您有所帮助:-**
Hive's size()