SQL Server CASE使用2个不同的表

时间:2018-05-25 15:22:06

标签: sql sql-server case

我试图在CASE语句中使用两个不同的表,但我真的很挣扎。我的大部分SQL知识都是自学的,所以发现它有点挣扎!

我试图实现的结果是TC.ClockingStatus WHEN 1然后'24'( 1st Table )如果不是OP.Status当'C'那么99当'我'那么50 ELSE 0 END(第二表)AS状态。

这是我目前的陈述:

{{1}}

2 个答案:

答案 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