2012-11-07 82 views
1

我有表ABC。現在表A作爲列A1(主鍵),表B有列B1(主鍵)和表C有列A1(外鍵表A.A1),B1(外鍵表B.B1)。交叉連接中的SQL Server子查詢返回錯誤

現在我正在寫的,其列出從AB所有行的查詢,如果行被找到匹配表C否則爲0

SELECT 
    ISNULL((SELECT CAST(1 AS BIT) 
      FROM C 
      WHERE C.A1 = A.A1 AND C.B1 = B.B1),0) AS [TAG], 
    A.A1, 
    B.B1 
FROM A CROSS JOIN B 

這將被設置爲1位列即使查詢在組合A1B1列後沒有重複行,查詢也會生成Subquery returned more than 1 value.錯誤。

+0

發佈子查詢的結果單獨 – jsj

回答

2

試試這個,

SELECT CAST(COALESCE(c.b1, 0) AS BIT) TAG 
FROM 
     (
      SELECT A1, B1 
      FROM A CROSS JOIN B 
     ) D LEFT JOIN C 
       ON c.A1 = d.A1 AND 
        c.B1 = D.B1 
+0

列'A1'和'B1'是'varchar'。在'C'表中檢查存在之後,我必須動態創建查詢中的位列。 –

+0

@SohamDasgupta添加了更新。 –

+0

輝煌。按預期工作。 –