0
我正在寻找从两个不同的表中拉相同的列,基于一个条件的参数。case语句一次选择多行
所以我偶然发现了我以前没有用过的CASE声明。我发现这在这个mannor中对我来说很有用,但是如果我可以做一个CASE语句,然后选择我需要的列,而不是每列执行一次,我都会喜欢它。
下面是我拥有和工作的一个例子,看起来有点多余。
SELECT TOP(10)
u1.userid as userid,
version = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN 3
ELSE 4
END,
nameOrg = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN CONVERT(NVARCHAR, u1.title)
ELSE CONVERT(NVARCHAR, u2.title)
END,
nameContact = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN CONVERT(NVARCHAR, u1.contact)
ELSE CONVERT(NVARCHAR, u2.contact)
END,
pltName = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN p1.name
ELSE p2.name
END
FROM
usr1 u1
LEFT OUTER JOIN
usr2 u2
ON u1.userid = u2.userid
LEFT OUTER JOIN
plt2 p2
ON u2.pltid = p2.pltid
LEFT OUTER JOIN
plt1 p1
ON u1.pltid = p1.pltid
有没有建议吗?
- 编辑mov 7,5:22:将连接添加到plt表和pltName的情况下,添加到所需的功能。
这是一个有用的想法,尽管它也忽略了对null表达式存在次要条件的事实。除此之外,我还添加了更多连接,条件保持不变(检查前两个表),但所使用的变量位于不同的表上,以确保我获得100%的有效答案。 –