我有下表a
Empl_id Add_type Ph_no
66 H 44-14424
66 F 44-1442
66 C 67-384-295
66 B (8888) 8440
66 H 608 6775
57 B 12345
57 C 78910
58 C 9988
我需要得到不同的emp\u id和phone\u number,如果address=b,那么ph\u number else null作为phone\u number
我的输出应该如下所示,其中sql选择add\u type作为b,并将ph\u no else显示为null
Empl_id Ph_no
66 (8888) 8440
57 12345
58 NULL
我尝试了以下查询:
select distinct y.emp_id, case when Add_type='B' then i.iphone else null end
ip from (SELECT empl_id,Add_type as phty,ph_no as ph,Row_number()
OVER(PARTITION BY employee_id ORDER BY employee_id) rn
FROM
(SELECT DISTINCT
E.empl_id,E.Add_type,E.ph_no FROM Table Emp E )t )y
left outer join
(SELECT
e1.empl_id,Add_type,E1.ph_no, case when Add_type='B' then ph_no else null
end phone
FROM Table Emp E1
group by E1.employee_id, Address,
E1.phone_number )i
on y.empl_id=i.empl_id
WHERE y.rn = 1 and i.emp_id='66'
我得到的上述查询的输出是
emp_id ph
66 (8888) 8440
66 NULL
我有两排,我需要一排有PHU编号的。我哪里做错了?我用 Impala 作为我的数据库。
1条答案
按热度按时间b91juud31#
下面的代码将为您提供所需的输出: