- ベストアンサー
ユニークなデータの件数を取り出すSQL文
- ユニークなデータの件数を取り出すためのSQL文の作成方法を教えてください。
- DATE1、DATE2、DATE3のいずれかが同じ場合に行を取り出し、カウントする方法についても教えてください。
- テーブルのデータをCDのみ取り出す際には、どうすれば良いでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
NOが主キー、CDとDATEはCD1・DATE1から順に設定されていくという前提で、 select COUNT(*), CD1, CD2, CD3 from ( --DATE1、DATE2、DATE3の全てが一致 select T1.CD1, T1.CD2, T1.CD3 from T T1 where exists ( select * from T T2 where T1.NO <> T2.NO and (T1.CD1 = T2.CD1 and T1.DATE1 = T2.DATE1) and (T1.CD2 = T2.CD2 and T1.DATE2 = T2.DATE2) and (T1.CD3 = T2.CD3 and T1.DATE3 = T2.DATE3) ) union all --DATE1、DATE2のみが一致 select T1.CD1, T1.CD2, null from T T1 where exists ( select * from T T2 where T1.No <> T2.NO and (T1.CD1 = T2.CD1 and T1.DATE1 = T2.DATE1) and (T1.CD2 = T2.CD2 and T1.DATE2 = T2.DATE2) and ((T1.CD3 is null and T2.CD3 is null) or ((T1.CD3 = T2.CD3) and ((T1.DATE3 <> T2.DATE3)))) ) union all --DATE1のみしかデータがない select T1.CD1, null, null from T T1 where T1.CD2 is null ) group by CD1, CD2, CD3; とか。 やりたいことを正しく理解できているか分かりませんが。
お礼
ありがとうございました。バッチリです。