假设有一些电话号码连接到人,这些电话号码都有索引。
限制是,只显示其中一个数字 - 所以,如果有一个16389索引的数字,只有它应该显示,即使有一个16385索引号或公司号。 CASE声明不起作用(或者我可以根据需要构建它)。
这是我想到的例子(不工作):
(CASE
WHEN pho.ptype_idx = 16389 THEN pho.phone END
ELSE WHEN pho.ptype_idx = 16385 THEN pho.phone END
ELSE pho1.phone (this is the company phone number)
END) as 'column1'
问题是,如何在条件成立后强制CASE结束?因为现在它返回重复的行,只有电话号码改变了。或者也许另一种方法会更好?我使用的是SQL Server 2016。
答案 0 :(得分:2)
case
表达式不会生成其他行。你问题的那部分并没有多大意义。
您的case
在语法上不正确。正确的表述是:
(CASE WHEN pho.ptype_idx = 16389 THEN pho.phone
WHEN pho.ptype_idx = 16385 THEN pho.phone
ELSE pho1.phone (this is the company phone number)
END) as column1
至少,这在语法上是正确的,所以它至少应该起作用。它也可以解决你的问题。
这可以更简单地写成:
(CASE WHEN pho.ptype_idx IN (16389, 16385) THEN pho.phone
ELSE pho1.phone (this is the company phone number)
END) as column1