我有一个数据集,如下所示。

EMPLID  PHONE_TYPE  PHONE
------  ----------  --------
100     HOME        111-1111
100     WORK        222-2222
101     HOME        333-3333
102     WORK        444-4444
103     OTHER       555-5555


我想使用PHONE_TYPE字段为每个员工选择恰好一行来建立首选项。如果员工有一个,则我想要HOME电话号码,如员工100和101一样。如果没有HOME号码,我想要工作号码(员工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

09-11 20:25