0

次のデータを含む「MainTable」というテーブルがあります
ここに画像の説明を入力

次のデータを持つ「ChildTable」という別のテーブル (外部キー番号)
ここに画像の説明を入力

少なくとも 1 つの「S」ステータスが存在する場合、「ChildTable」からこれらのレコードを取得したいと考えています。しかし、この番号ID「R」の他のレコードがある場合、私はそれを取得したくありません。 ここに画像の説明を入力

フォローしてみた

Select m.Number, c.Status from MainTable m, ChildTable c
where EXISTS (SELECT NULL                                 
              FROM ChildTable c2                      
              WHERE  c2.status =’S’ and c2.status <> ‘R’                           
              AND  c2.number = m.number)

しかし、ここでは「R」ステータスのレコードも取得しています。何が間違っていますか?

4

3 に答える 3

0
WITH ChildrenWithS AS (
    SELECT Number
    FROM ChildTable
    WHERE Status = 'S'
)
,ChildrenWithR AS (
    SELECT Number
    FROM ChildTable
    WHERE Status = 'R'
)
SELECT MaintTable.Number
      ,ChildTable.Status
FROM MainTable
     INNER JOIN ChildTable
         ON MainTable.Number = ChildTable.Number
WHERE MainTable.Number IN (SELECT Number FROM ChildrenWithS)
      AND MainTable.Number NOT IN (SELECT Number FROM ChildrenWithR)
于 2013-10-17T10:30:57.820 に答える