我希望根据条件参数从两个不同的表中提取相同的列。
所以我偶然发现了我以前很少使用的 CASE 语句。我发现这对我有用,但如果我可以做一个 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 案例,以添加到所需的功能。