在我的SELECT查询中,我想在我的CASE中为一个名为isactive的值设置一个条件,以便如果当前行的列类型是“adhoc”,那么将isactive的值设置为“n/a”。

SELECT CASE Type
            WHEN 'scheduled' THEN 'Scheduled'
            WHEN 'adhoc' THEN 'AdHoc'
            ELSE 'Unknown'
       END AS 'Type',
       CASE IsActive
            WHEN (Type) = 'adhoc' THEN 'n/a'
            WHEN 0 THEN 'Stopped'
            WHEN 1 THEN 'Active'
       END AS 'Status'
FROM MyTable

但我在网上发现了这个错误:
“=”附近的语法不正确。
如何根据当前行上的条件做出决策?

最佳答案

您的第二个case基于一个列,然后您试图将条件放入when中,这是不允许的:

CASE IsActive
            WHEN (Type) = 'adhoc' THEN 'n/a'
            WHEN 0 THEN 'Stopped'
            WHEN 1 THEN 'Active'
       END AS 'Status'

我想你是想这么做的(使用不带列的case,并将条件放入when):
CASE
WHEN [Type] = 'adhoc' THEN 'n/a'
WHEN IsActive = 0 THEN 'Stopped'
WHEN IsActive = 1 THEN 'Active'
END AS 'Status'

10-07 19:27
查看更多