2011-10-18 18 views

答えて

83

使用CASEこの結果を得るために、ISNULLとSELECT文を使用することができます。

SELECT 
    TABEL1.Id, 
    CASE WHEN EXISTS (SELECT Id FROM TABLE2 WHERE TABLE2.ID = TABLE1.ID) 
     THEN 'TRUE' 
     ELSE 'FALSE' 
    END AS NewFiled 
FROM TABLE1 

TABLE2.IDがユニークであるか、主キー、あなたもこれを使用することもできます。

SELECT 
    TABEL1.Id, 
    CASE WHEN TABLE2.ID IS NOT NULL 
     THEN 'TRUE' 
     ELSE 'FALSE' 
    END AS NewFiled 
FROM TABLE1 
    LEFT JOIN Table2 
    ON TABLE2.ID = TABLE1.ID 
14

あなたはまた、

SELECT 
Table1.ID, 
ISNULL((SELECT 'TRUE' FROM TABLE2 WHERE TABLE2.ID = TABEL1.ID),'FALSE') AS columName, 
etc 
FROM TABLE1 
+2

私はただ、あなたがブール値を望んでいたと気づきました1つのクエリで 'INTERSECT'、' UNION'と 'EXCEPT'を組み合わせるには、真/偽 – Purplegoldfish

3

CASE文を使用して、このようにそれを実行します。

SELECT 
    T1.Id [Id] 
    ,CASE WHEN T2.Id IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END [Has Foreign Key in T2] 
FROM 
    TABLE1 [T1] 
    LEFT OUTER JOIN 
     TABLE2 [T2] 
     ON 
     T2.Id = T1.Id 
7
SELECT Id, 'TRUE' AS NewFiled FROM TABEL1 
INTERSECT 
SELECT Id, 'TRUE' AS NewFiled FROM TABEL2 
UNION 
SELECT Id, 'FALSE' AS NewFiled FROM TABEL1 
EXCEPT 
SELECT Id, 'FALSE' AS NewFiled FROM TABEL2; 
+4

+1より1/0を選択するほうが良いかもしれません! –

関連する問題