4

以下に示すように、2つのテーブルがあります。

Id Name                            Id   Status
--------                           -------------------
1   A                              1        Approved
2   B                              6        Approved
3   C                              4        Pending
4   D                              1        Approved
5   E                              1        Pending
6   F                              3        Pending
                                   5        Rejected

これが、出力を次のようにしたい方法です。

Id  Name  Status
-------------------
1    A    Pending
2    B    
3    C    Pending 
4    D    Pending
5    E
6    F

左結合を使用してみましたが、複数の行を取得しています。

select t1.ID,Name,Status from t1 left join t2 on t1.id=t2.id

where Status=pending を追加すると、ID 1 と 3 のみが取得されます。私が試したクエリは次のとおりです。

select distinct t1.id,name,status from t1 left join t2 on t1.id=t2.id  (this gives me duplicate records i.e id 1 is occurs twice with approved and pending)

そしてまた

select distinct t1.id,name,status from t1 left join t2 on t1.id=t2.id where t2.status='pending'  (gives me only 1,3 and 4)

誰でも私を助けることができますか、前もって感謝します。

4

1 に答える 1

5

T1からのすべての行を含めるには、条件を句SQL FiddleT2に移動します。status = 'pending'ON

SELECT t1.ID,
       Name,
       Status
FROM   t1
       LEFT JOIN t2
         ON t1.id = t2.id
            AND t2.status = 'pending' 

重複が発生した場合に1行のみを返すidには(Fiddle

WITH CTE AS
(
SELECT DISTINCT id, Status
FROM T2
WHERE Status = 'Approved' 
)
SELECT t1.ID,
       Name,
       Status
FROM   t1
       LEFT JOIN CTE
         ON t1.id = CTE.id
于 2013-06-14T17:14:13.927 に答える