Sql server case语句一次选择多行
我希望根据条件参数从两个不同的表中提取相同的列 因此,我偶然发现了我以前很少使用的案例陈述。我发现这在这个手册中对我很有用,但我希望我能做一个案例陈述,然后选择我需要的列,而不是每列做一个 这是一个我所拥有和工作的例子,只是看起来有点多余Sql server case语句一次选择多行,sql-server,sql-server-2008,case,Sql Server,Sql Server 2008,Case,我希望根据条件参数从两个不同的表中提取相同的列 因此,我偶然发现了我以前很少使用的案例陈述。我发现这在这个手册中对我很有用,但我希望我能做一个案例陈述,然后选择我需要的列,而不是每列做一个 这是一个我所拥有和工作的例子,只是看起来有点多余 SELECT TOP(10) u1.userid as userid, version = CASE WHEN (u2.userid IS NULL OR u1.enabled = 0) THEN 3
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案例中,以添加到所需的功能
SELECT TOP(10)
u1.userid as userid
,version = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN 3
ELSE 4
END
,CONVERT(NVARCHAR,isnull(u2.title,u1.title)) nameOrg
,CONVERT(NVARCHAR,isnull(u2.contact,u1.contact)) nameContact
FROM
usr1 u1
LEFT OUTER JOIN
usr2 u2
ON u1.userid = u2.userid
这是一个有用的想法,尽管它也忽略了空表达式有一个次要条件这一事实。除此之外,我还添加了更多的联接,其中条件保持不变(检查前两个表),但使用的变量位于不同的表上,以确保得到100%的有效答案。