在INNER JOIN中使用SELECT的SQL Case语句。多部分错误无法绑定

问题描述 投票:2回答:1

我正在写一个INNER JOIN,它添加了像CompanyId等字段。

但在CASE里面我的INNER JOIN我在WHERE之后得到一个错误

IR.MyId和ICB1.MyId上的错误说明

“多部分标识符无法绑定”

我对此查询的意图是在CASE中添加INNER JOIN

所以第一列是A.CompanyId。第二列将是CASE语句,用于检查ID是否存在于另一个表中。如果没有,它将做另一个SELECT声明,ELSE只是MyID

但是我在SELECT COUNT(*)里面的CASE WHEN上得到了一个错误。

任何帮助表示赞赏。谢谢。

INNER JOIN
    (SELECT DISTINCT 
         A.CompanyId, 
         CASE 
            WHEN (SELECT count(*) 
                  FROM Table1 IBC1 
                  WHERE IR.MyId = ICB1.MyId) == 0
                THEN 1 
                ELSE 0 
         END 
     FROM 
         cmp.CompanyNews A) E ON NP.CompanyId = E.CompanyId
sql-server join case
1个回答
0
投票

我没有完整的查询,但如果它可行,我会采取以下方法:

...
    CASE
        WHEN ICB1_ID.ID IS NULL
        THEN 1
        ELSE 0
    END [ColumnName]
FROM
    ...
    INNER JOIN
        (
            SELECT DISTINCT A.CompanyId
            FROM cmp.CompanyNews A
        ) E
    ON NP.CompanyId =  E.CompanyId
    OUTER APPLY
        (
            SELECT TOP 1 ICB1.MyID ID
            FROM Table1 IBC1
            WHERE ICB1.MyId = IR.MyId
        ) ICB1_ID
© www.soinside.com 2019 - 2024. All rights reserved.