我试图在CASE语句中使用两个不同的表,但我真的很挣扎。我的大部分SQL知识都是自学的,所以发现它有点挣扎!
我试图实现的结果是TC.ClockingStatus WHEN 1然后'24'( 1st Table )如果不是OP.Status当'C'那么99当'我'那么50 ELSE 0 END(第二表)AS状态。
这是我目前的陈述:
{{1}}
答案 0 :(得分:2)
可以在case语句中使用不同的列/表达式,
但是你不能像第一个WHEN
那样在第一个CASE
WHEN TC.ClockingStatus = 1 THEN 24
WHEN OP.Status = 'C' THEN 99
WHEN OP.Status = 'I' THEN 50
ELSE 0 END
之前命名列。
试试这个:
WHEN
CASE
测试中的表达式可能会像您一样复杂。您甚至可以嵌套CASE
WHEN TC.ClockingStatus = 1 THEN 24
ELSE CASE OP.Status
WHEN 'C' THEN 99
WHEN 'I' THEN 50
ELSE 0
END
END
语句:
{{1}}
答案 1 :(得分:1)
我认为您的问题是您尝试使用CASE
表单:
CASE <Field> WHEN <Value> THEN <Result>
您需要使用的形式是:
CASE WHEN <Any condition no matter how complicated> THEN <Result>
示例:
CASE OP.Status WHEN 'C' THEN 99 ELSE 0 END
也可以用作:
CASE WHEN OP.Status='C' THEN 99 ELSE 0 END