我想要Status列= 1
检查另一个表中是否有行返回'检查'如果没有行返回'在DB'
SELECT ID, UserName,
CASE [Status]
WHEN 1 THEN
if ((Select Count(*) From Logs_TB Where Logs_TB.UserName = Users_TB.UserName) > 0)
'Check'
Else
'In DB'
WHEN 2 THEN 'Revision'
WHEN 3 THEN 'Sent'
END AS StatusName
FROM Users_TB CROSS JOIN Logs_TB
编辑1:
我有两张桌子
在第一张表中。 我想获得Column [Status]
的以下结果if FirstTable.ColumnStatus = 1
if SecondTable.ColumnA = FirstTable.ColumnB Has Rows
'Check'
else
'In DB'
else if FirstTable.ColumnStatus = 2
'Revision'
else if FirstTable.ColumnStatus = 3
'Sent'
编辑2
这是一个例子
我希望从就业表中选择所有行
我希望将列状态解析为列为" StatusName"
如果Status = 1它有两个值
第一个值检查QualificationID和SpecializationID是否有行 在表'职位空缺'返回'检查'
如果表格中没有任何行'职位空缺'返回'在DB'
如果Status = 2' Revision'
如果状态= 3'已发送'
答案 0 :(得分:3)
您需要更改案例并添加更多条件:
SELECT ID, UserName,
CASE
WHEN [Status] = 1
AND EXISTS (SELECT 1
FROM Logs_TB
WHERE Logs_TB.UserName = Users_TB.UserName) THEN 'Check'
WHEN [Status] = 1 THEN 'In DB'
WHEN [Status] = 2 THEN 'Revision'
WHEN [Status] = 3 THEN 'Sent'
ELSE NULL
END AS StatusName
FROM Users_TB
CROSS JOIN Logs_TB
出于性能原因,最好使用EXISTS
而不是将COUNT
与0进行比较。
答案 1 :(得分:0)
试试这个
504