下記のようなテーブルから
ユニークなデータの件数を取り出すクエリを作成したいのですが、どうもわかりません。
教えてください!宜しくお願い致します。
NO | CD1 | DATE1 | CD2 | DATE2 | CD3 | DATE3
1 111 20120301 222 20130301 333 20130303
2 111 20120301 222 20130301 333 20130303
3 222 20120301 333 20130301
4 222 20120301 333 20130301
5 333 20120301 444 20130301 555 20130302
6 333 20120301 444 20130301 555 20130303
7 333 20120301
8 333 20120302
というテーブルがあって、
この中で
DATE1、DATE2、DATE3のいずれかが、
同じであれば、行を取り出しカウントする。
1項目しかデータがなければ、単純にカウントする。
取り出しはCDのみ。
上記であれば、
COUNT | CD1 | CD2 | CD3
2 111 222 333
2 222 333
2 333 444 ※こちらはDATE3が異なるのでCD3は取り出さない。
2 333
No.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;
とか。
やりたいことを正しく理解できているか分かりませんが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- 写真 CDのデータが読み取り不可能になりました 7 2023/06/27 14:11
- USBメモリー・SDカード・フラッシュメモリー CD-Rに油性ペンで書くのはやめたほうがいいでしょうか 2 2022/09/14 22:12
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- その他(データベース) CDデータ 泣き寝入りするしかないのでしょうか 4 2022/09/08 23:37
- 音楽配信 音楽を購入したいのですが、音声データをQRコードで読みとる方法とは? 2 2022/06/13 23:33
- MySQL MYSQL エラー 2 2022/10/18 11:37
- ドライブ・ストレージ 外付けCDドライブだけ音楽CDが読み込まない 3 2023/08/18 21:28
- iCloud 【iTunes】CDをiPhoneに取り込めません 2 2022/09/19 09:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
datetime型でNULL値を入れたい。
-
フィルターかけた後、重複を除...
-
差し込み後、元データを変更し...
-
SQLで特定の項目の重複のみを排...
-
エクセルで最後の文字だけ置き...
-
SELECT 文 GROUP での1件目を...
-
外部参照してるキーを主キーに...
-
SQLで列名を変数にできないでし...
-
INSERT文でフィールドの1つだ...
-
テーブル列数とデータファイル...
-
Exel VBA 別ブックから該当デ...
-
SQLServerで文字列の末尾からあ...
-
Outlook 送受信エラー
-
EXISTSを使ったDELETE文
-
VBA Scripting.Dictionary 連想...
-
JANコードとPOSコードは同じ?
-
SQLによる"あいうえお"順でソー...
-
DataViewで複数条件の...
-
[MySQL] 3つのテーブルの結合で...
-
カーソル0件の時にエラーを発生...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
datetime型でNULL値を入れたい。
-
積み上げ棒グラフのためのSQL S...
-
多くの選択項目を処理(SELECT)...
-
差し込み後、元データを変更し...
-
外部参照してるキーを主キーに...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
SELECT 文 GROUP での1件目を...
-
1、Rstudioで回帰直線を求める...
-
for whichの使い方
-
カーソル0件の時にエラーを発生...
-
SQLで特定の項目の重複のみを排...
-
EXISTSを使ったDELETE文
-
SQLServerで文字列の末尾からあ...
-
1日に1人がこなせるプログラム...
-
列のヘッダーを含めるのをデフ...
-
INSERT文でフィールドの1つだ...
-
SQL Date型の列から年月だけを...
-
access2003 クエリSQL文に...
-
重複していないレコードの抽出...
おすすめ情報