SQL Server:CASE和连接字符串

我想知道如何从多个SQL CASE表达式输出连接字符串。SQL Server:CASE和连接字符串

这是我的查询:

SELECT 

u.UserId,

FirstName,

CASE u.access_b

WHEN '5000' THEN 'Active'

ELSE ''

END AS B,

CASE u.access_l

WHEN '2199-12-31' THEN 'Active'

ELSE ''

END AS LK

FROM

Users u

JOIN

userGroupMembership ugm ON u.userId = ugm.userId

JOIN

usergroup ug ON ug.usergroupId = ugm.usergroupId

WHERE

ug.usergroupId = 1220

AND (u.primaryType = 1 or u.primaryType = 2)

我得到这个:

因此,而不是两列B和LK,我想介绍一个新的列这将称为访问级别,如果B是活动的或者LK是活动的,则根据每个程序添加B或LK。例如,如果仅B激活,则“访问级别”列的输出将为B,如果两个程序均处于活动状态,则输出为“B,LK”,如果LK仅处于活动状态,则列将具有LK的值。

我可以选择连接多个案例查询的列值吗?

谢谢,Laziale

回答:

你可以做到这一点是:

SELECT T.*, 

CASE WHEN B = 'Active' AND LK = 'Active' THEN 'B, LK'

WHEN B = 'Active' THEN 'B'

WHEN LK = 'Active' THEN 'LK'

ELSE ''

END AS [Access Level]

FROM

(

SELECT u.UserId,

FirstName,

case u.access_b

When '5000' then 'Active'

Else ''

End as B,

case u.access_l

when '2199-12-31' then 'Active'

else ''

end as LK

FROM Users u

join userGroupMembership ugm ON u.userId = ugm.userId

join usergroup ug ON ug.usergroupId = ugm.usergroupId

WHERE ug.usergroupId = 1220 and (u.primaryType = 1 or u.primaryType = 2)

) T

回答:

收件,检查你所描述的组合,并分配相应的值的第三CASE表达式。在伪代码:

CASE 

WHEN {B is active} AND {LK is active} THEN 'B, LK'

WHEN {B is active} THEN 'B'

WHEN {LK is active} THEN 'LK'

ELSE ''

END

CASE表达式,以便评估从顶部到底部,并且当其被满足条件解析到第一,因此,如果B和LK是活动的,则所述第一条件将得到满足,第一结果将被返回,而其他两个条件也都是真的并不重要。

以上是 SQL Server:CASE和连接字符串 的全部内容, 来源链接: utcz.com/qa/267245.html

回到顶部