Ste*_*M82 5 sql sql-server-2000 greatest-n-per-group
我有一个如下所示的数据集.
EMPLID PHONE_TYPE PHONE
------ ---------- --------
100 HOME 111-1111
100 WORK 222-2222
101 HOME 333-3333
102 WORK 444-4444
103 OTHER 555-5555
Run Code Online (Sandbox Code Playgroud)
我想使用PHONE_TYPE字段为每个员工选择一行来建立首选项.如果员工有一个,我想要家庭电话号码,如员工100和101的情况.如果不存在家庭电话号码,我想要工作号码(员工102),作为最后的手段,我会带其他与员工103一样的数字.实际上我的表有大约十几个PHONE_TYPE字段的值,所以我需要能够扩展任何解决方案,以包括不仅仅是我在示例中显示的三个值.有什么想法吗?谢谢.
我忘了,Server 2000 支持 Coalesce 吗?如果是的话,我认为这会起作用:
Select Distinct EmplID, Coalesce(
(Select Phone from Employees where emplid = e1.emplid and phone_type = 'HOME'),
(Select Phone from Employees where emplid = e1.emplid and phone_type = 'WORK'),
(Select Phone from Employees where emplid = e1.emplid and phone_type = 'OTHER')
) as Phone
From Employees e1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2403 次 |
| 最近记录: |