首页 > 解决方案 > 是否可以在 Case 语句中执行 Select 语句

问题描述

这样的事情可能吗?

SELECT WH_ACC_NO,
    CASE
        WHEN FIELD2 IN (SELECT * FROM TABLEB)
            THEN 'PASS'
        ELSE 'FAIL'
     END
FROM TABLEA

标签: sqlteradata

解决方案


Teradata 中 CASE 中的 SELECT 语法有点限制,您需要编写相关标量子查询以避免CASE 表达式错误的 WHEN 子句中的 3771 Illegal expression:

SELECT WH_ACC_NO,
    CASE -- when FieldWhatever is not unique this shuld be MAX(FieldWhatever)
        WHEN FIELD2 = (SELECT FieldWhatever FROM TABLEB AS b WHERE a.Field2 = b.FieldWhatever)
            THEN 'PASS'
        ELSE 'FAIL'
     END
FROM TABLEA AS a

推荐阅读