查询首选电话号码类型



我正在尝试编写一个查询,该查询将根据其中一列中的值为每条记录生成一行,在这种情况下,它是一个电话号码类型。某些类型对我来说比其他类型更有用,所以我一直在尝试选择它们的顺序。例如:如果存在一个";家;号码我想先放那一行(因为如果一个人有多个电话号码,他可以有多行(,如果没有家庭号码,那就给我一个手机号码,如果没有家或手机,那就告诉我一个工作号码。。。

我认为IF/THEN/ELSE可能很适合,但它与Excel中的简单公式不同,我只是没有用正确的方式编写它。或者,很可能还有更好的方法?我在以前的工作场所(早在我涉足sql之前(就有过这样的经历,他们说它就像";瀑布";,我记得当时我觉得它看起来很基本,很短,但我就是不想。

我希望能朝着正确的方向推动一下。

更新:以下是该表的一个大大简化的版本(带有无意义的随机电话号码(,适用于SQL Server

电话1512081<1054263>
ID_no 类型
408419 1 4401600
408419 13 4867631
406767 1 9183808
406767 13 6355198
410501 13 4336010
405193 8 2070904
405193 3
410501 8 8148225
407309 8 5195868
409858 8 3345459
408266 1
with data as (
select *,
row_number() over (
partition by ID_no
order by case type
when  1 then 1 when 5 then 2 when 8 then 3
when 13 then 4 when 3 then 5 else 6 end
) as rn
from T
)
select ID_no, type, phone from data where rn = 1;

最新更新