- 締切済み
重複データを含むSQL抽出方法
sqlserver2008で、以下のようなテーブルから、全体のレコード件数を取得したいと思います。 但し条件として、 ・b列とc列が重複しているものは、d列の最新の日付のものを残す。 ・b列が同じものはそのままカウント ・c列が同じものはそのままカウント a列|b列 |c列 |d列 ---------------------------- 1|host1 |100 |2010/10/01 2|host2 |101 |2010/10/01 3|host3 |102 |2010/08/01 4|host3 |102 |2010/10/01 5|host4 |104 |2010/10/01 6|host5 |104 |2010/10/01 7|host5 |105 |2010/09/01 8|host6 |106 |2010/08/01 9|host6 |106 |2010/10/01 10|host7 |107 |2010/10/01 上記の条件実行し、以下のような結果(件数)を求めたい場合どのようなSQLになりますでしょうか。 a列|b列 |c列 |d列 結果(8件) ---------------------------- 1|host1 |100 |2010/10/01 ○ 2|host2 |101 |2010/10/01 ○ 3|host3 |102 |2010/08/01 4|host3 |102 |2010/10/01 ○ 5|host4 |104 |2010/10/01 ○ 6|host5 |104 |2010/10/01 ○ 7|host5 |105 |2010/09/01 ○ 8|host6 |106 |2010/08/01 9|host6 |106 |2010/10/01 ○ 10|host7 |107 |2010/10/01 ○ select文の中にselect文を使ったりするのでしょうか。 内部結合などイマイチ理解できていないためよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 重複データの抽出方法(複数項目)
以下のようなテーブルからc列とd列のデータが重複しているレコードを取得したいために、以下のSQLを試してみました。 a列|b列|c列|d列 ---|---|---|--- 01 |01 |01 |01 02 |01 |01 |01 03 |02 |01 |03 04 |02 |02 |03 05 |01 |01 |02 06 |02 |02 |03 select * from テスト where c in (select c from テスト group by c,d having count(*)>1) and d in (select d from テスト group by c,d having count(*)>1) そうしたところ、以下の結果になってしまいました。 想定では、○のレコードだけ抽出できると思ったのです。 ×のレコードを抽出したくないのですが、SQLのどこが 間違っているのでしょうか? a列|b列|c列|d列 ---|---|---|--- 01 |01 |01 |01 ○ 02 |01 |01 |01 ○ 03 |02 |01 |03 × 04 |02 |02 |03 ○ 06 |02 |02 |03 ○ (使用DB)SQLServer2000
- ベストアンサー
- SQL Server
- (EXCEL)重複したデーターの抽出について
EXCEL2003 シート「sheet1」に下記のようなデーターがあります。 <sheet1> A B C D 1 りんご 青森 AAA BBB 2 みかん 愛媛 CCC DDD 3 みかん 青森 AAA BBB 4 りんご 青森 AAA BBB 5 みかん 愛媛 CCC DDD A列とB列が同じ値のものをシート「sheet2」に重複しているデーター は1行だけになり、E列にカウントした数が入力されるようにしたいです。 (C列やD列は同じ値でなくてもA列とB列が同じ値の時にカウントして抽出したいです) <sheet2> A B C D E りんご 青森 AAA BBB 2 みかん 愛媛 CCC DDD 2 ご教示のほどお願いします。
- ベストアンサー
- オフィス系ソフト
- GROUP BYを使ったSELECT文の総件数を求める方法
【表A】 列1 | 列2 ----------- 山田 | A 山田 | A 田中 | A 田中 | B 田中 | C 木村 | A 木村 | A 木村 | B 上記で列1・列2をグループ化した件数を求めたいのですが、Oracleだと SELECT COUNT(*) FROM (SELECT 列1,列2 FROM 表A GROUP BY 列1,列2) というSQL文で結果「6」が出力されますが、SQLServerではエラーとなってしまいます。 SQLServerで実現したい場合はどのように記述すればよろしいでしょうか?
- ベストアンサー
- SQL Server
- データ抽出方法
おはようございます。 sheet1 B列、C列に重複してるデータと、そうでないデータが混在して沢山あります。 sheet2 B列、C列に一点一様の型でデータを抽出したいご伝授下さい sheet1 B列、C列 A-1-1 A A-1-1 A B-2-1 D B-2-2 E C-2-1 B C-2-1 B C-2-3 C sheet2 B列、C列(抽出結果) A-1-1 A B-2-1 D B-2-2 E C-2-1 B C-2-3 C
- ベストアンサー
- その他MS Office製品
- EXCEL2013 重複データかつ複数条件
添付ファイルの通り、A列、B列、C列にデータがあります。 以下の条件すべてを満たす件数を表示したいと考えております。 ・A列 2016/2/15 ・B列 重複するデータを一件とする ・C列 X この表で言うと4件という結果になる計算式を作成したいところです。 シンプルな計算式をご教授いただきたいと存じます。 どうぞよろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- SQLで複数列のデータを複数行にしたい
以下のようなテーブルがあるとします。 column1 a,b,c <- カンマの数は最大50 b,d c,x SQLを実行し以下のような結果を返したいです。 以下の3つのことをすればできそうなのですが複数列を複数行にする方法がわかりません。 1.strtokenで50カラムに分割(カンマ分割) 2. 50カラムを1カラムにする 3.DISTINCTで重複データの削除 結果 a b c d x カンマの数が50あるので、かなり長いSQLになるのですが SELECT文50個をUNIONしてやればできるかなとも考えているのですが 何か良い方法はないでしょうか。 よろしくお願いします。
- ベストアンサー
- Oracle
- 抽出した表でデータをカウントしたいのですが・・・
タイトルにあるとおり、あるデータをオートフィルで抽出した状態で、その抽出結果からデータをカウントしたいのです。 以下のような表があったとします。 A B C D E F G H I 1 ○ ○ ○ ○ 2 ○ ○ ○ ○ 3 ○ ○ ○ ○ 4 ○ ○ ○ ○ 5 ○ ○ ○ ○ 6 ○ ○ ○ ○ 7 ○ ○ ○ ○ 8 ○ ○ ○ ○ 9 ○ ○ ○ ○ この表では、仮に各行○が4つとして、ランダムに各列に○が振り分けられています。 A列・4個、B列・5個、C列・4個、D列・4個、E列・6個、F列・4個、G列・4個、H列・3個、I列・2個 という状態です。 A B C D E F G H I 1 ○ ○ ○ ○ 2 ○ ○ ○ ○ 3 ○ ○ ○ ○ 4 ○ ○ ○ ○ 5 ○ ○ ○ ○ 8 ○ ○ ○ ○ 9 ○ ○ ○ ○ ある条件でオートフィルによって、抽出した結果が上の表です。 今回の例では6,7行が消えた状態だったとします。 それぞれ、A列・3個、B列・4個、C列・3個、D列・3個、E列・5個、F列・4個、G列・3個、H列・2個、I列・1個 と、いう結果になりました。 このような状態になった表で最下段、この場合9から上に向かって3行分の○をカウントするような方法、または便利な関数はありますでしょうか? 今回の例ですと、最下段から、3行分、5、8、9のそれぞれの列の○をカウントするという感じです。 A列・1個、B列・2個、C列・1個、D列・1個、E列・2個、F列・1個、G列・2個、H列・1個、I列・1個 これが今回の例における求めたい結果です。 抽出してない状態でしたら、OFFSET関数でいけるのですが、抽出した状態からだと私のスキルでは解決できません。 どなたか、ご存知の方ご教示よろしくお願いします^^;
- 締切済み
- オフィス系ソフト
- SQL文をご教授願います
SQL文をご教授願います。 以下のようなテーブルを仮定しています。 A B C D ---------------------- 10 100 1203 A 10 200 1204 B <--- 取得したい 11 300 1203 C 11 300 1204 D <--- 12 400 1206 D 12 500 1207 E <--- ・ ・ A列をー意にして、A列・D列のデータを取得したい 条件 Bの大きい方を取得する Bの値が同じ場合はCの大きい方を取得する。 (A列には同じデータが2以上あるとします) (C列には同じデータはありません) 欲しい結果 A D -------- 10 B 11 D 12 E
- ベストアンサー
- その他(データベース)
- Excel 重複データの番号を抽出
Excel:Office2003 OS:WindowsXP excelのデータで A列 B列 1 A 2 B 3 A 4 C 5 D 6 A 7 A 8 B 9 B 10 C 以上のように並んでいるデータを以下の E列 F列 G列 H列 I列 A 1 3 6 7 B 2 8 9 C 4 10 D 5 ようにしたい場合はどのようにしたらいいのか教えてください。 マクロではなく関数で処理をしたいと思っています。 よろしくお願いします。
- 締切済み
- その他([技術者向] コンピューター)
お礼
ありがとうございます。データを取得することができました。 件数はcountを使えば取得できますでしょうか?