
[code]

    tableA
    ID  YMD        DAY     SE    　 CSE  　　　CODE
    22  19970901    0       0       0       KG00100
    22  19970901    0       1       0       KG00610
    22  19970901    0       1       1       KG01042
    22  19970901    0       1       2       KG00361
    22  19970901    0       1       3       KG00363
    22  19970901    0       2       0       KG01150
    22  19970901    0       3       0       KG01631
    22  19970901    0       3       1       KG01632
    
    22  19970912    0       0       0       KG00200
    22  19970912    0       1       0       KG01631
    22  19970912    0       1       1       KG01632
    22  19970912    0       2       0       KG01670
    22  19970912    0       3       0       KG01320
    22  19970912    0       3       1       KG01180
    22  19970912    0       3       2       KG02281
    22  19970912    0       3       3       KG00930
    
    22  19971205    0       0       0       KG00200
    22  19971205    0       1       0       KG04830
    22  19971205    0       1       1       KG04230
    22  19971205    0       1       2       KG04410
    22  19971205    0       2       0       KG01633
    22  19971205    0       2       1       KG01670
    22  19971205    0       2       2       KG00362
    
    22  19971216    0       0       0       KG00200
    22  19971216    0       1       0       KG05540
    22  19971216    0       1       1       KG06140
    22  19971216    0       1       2       KG00510
    22  19971216    0       2       0       KG01670
    
    22  19980127    0       1       0       KG01110
    22  19980127    0       1       1       KG05160
    22  19980127    0       1       2       KG05310
    22  19980127    0       1       3       KG05320
    22  19980127    0       1       4       Z10180
    22  19980127    0       2       0       KG01670
    22  19980127    1       0       0       KG00200
    22  19980127    1       1       0       KG01633
    22  19980127    1       1       1       KG00362
    
    22  19980206    0       0       0       KG00200
    22  19980206    0       1       0       KG05040
    22  19980206    0       1       1       KG01140
    22  19980206    0       2       0       KG01110
    22  19980206    0       2       1       KG05160
    22  19980206    0       2       2       KG05310
    22  19980206    0       2       3       KG05320
    22  19980206    0       2       4       Z10180
    22  19980206    0       3       0       KG01633
    22  19980206    0       3       1       KG01670
    22  19980206    0       3       2       KG00362
    
[/code]

お世話になります。  
上記の表で同じ日付(YMD)の中で DAYのが0 SEが0 CSEが0
でCODEがKG00100もしくはKG00200の値を持っていないIDと日付を抽出したいです。  
期待値としては ID22 19980127のDAY0のグループにはCODE KG00200もしくはKG00100が含まれていないので22 19980127
が抽出できるとうれしいです。  
ID YMD DAY SEQ CSEQ CODE  
22 19980127 0 0 0 KG00200  
このレコードをインサートしたいと考えています。

DBはmanagement stadioです。

ご教授よろしくお願いします。

追記  
各日付の中で DAYが0 SEが0 CSEが0 CODEがKG00200もしくはKG00100がない日付とIDを知りたいです。


CC BY-SA 3.0
2017-01-24T02:06:17.077
32096
2017-01-24T05:24:02.930
2017-01-24T04:35:29.893
19310
19310
question
c# sql
SQLで条件にマッチするレコードが存在するか判定したい


まずテーブルに`DAY`, `SE`,
`CSE`の条件を適用し、それから`CODE`の除外条件に該当するグループのレコードを除外するようなクエリーを作成すればよいと思います。  
ですので`NOT EXISTS`を使用して

[code]

    WITH cte
    AS
    (
        SELECT *
          FROM tableA
         WHERE DAY = '0'
           AND SE = '0'
           AND CSE = '0'
    )
    SELECT *
      FROM cte t1
      WHERE NOT EXISTS
    (
        SELECT *
          FROM cte t2
         WHERE t1.ID = t2.ID
           AND t1.YMD = t2.YMD
           AND t1.DAY = t2.DAY
           AND t2.CODE IN ('KG00100', 'KG00200')
    )
    
[/code]

このようなクエリーで実現できると思います。

# 追記

質問の意図としては`GROUP BY ID, YMD`を掛ける必要があるようですので、上のクエリーに対して

  * 2個目の`SELECT *`を`SELECT DISCTINCT ID, YMD`に変更
  * `AND t1.DAY = t2.DAY`を削除

すれば意図通りになるのではないかと思います。  
ですが出力をグループ化するのであれば初めから

[code]

    SELECT ID, YMD
      FROM tableA
     WHERE DAY = '0'
       AND SE = '0'
       AND CSE = '0'
     GROUP BY ID, YMD
    HAVING SUM(CASE WHEN CODE LIKE 'KG00[12]00' THEN 1 ELSE 0 END) = 0
    
[/code]

のように`HAVING`句を使用して抽出を行うこともできます。


CC BY-SA 3.0
2017-01-24T02:45:16.730
32099
2017-01-24T05:24:02.930
2020-06-17T08:14:45.997
-1
5750
32096
answer