• ベストアンサー
  • 困ってます

重複レコードの抽出

Windows Server 2003上で、SQL Server 2000を 使用しています。下記のようなSQLを作成したいのですが、知識不足のためご助力願いたいのですが。 テーブル名 test フィールド seihin (1項目のみ) seihinの構成  先頭4バイト 製品コード   後半4バイト 連番(0000~9999) やりたいこと seihinの重複するレコードを含む 製品コードに対しそのコード別の件数の算出 例 xxxx0002,xxxx0011,yyyy1111が複数件あるとき、 seihinコードがxxxxであるもの全体の件数及び yyyyであるもの全体の件数 なお、下記のSQLにて重複レコードの抽出とカウントはできていますが、それ以降がわかりません。 select seihin,count(seihin) as scount from test group by seihin having (count(seihin)>1) 以上よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • SQL Server
  • 回答数3
  • 閲覧数1336
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3

次のようなSQLで良いように思います。 select seihin1,sum(scount) from ( select left(seihin,4) as seihin1,count(seihin) as scount from test group by seihin having (count(seihin)>1) ) as X group by seihin1

共感・感謝の気持ちを伝えよう!

質問者からのお礼

k_o_r_o_c_h_a_n様、有難う御座います。 確認致しました。

その他の回答 (2)

  • 回答No.2

SQL Server 無いんで、試していませんが、 SELECT LEFT(seihin, 4) AS code, count(seihin) as count FROM test GROUP BY code でどうでしょう?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

masayuki0511様、回答有難う御座います。 ただ、残念乍SQLの形式には合っていないようです。

  • 回答No.1

内容は、きちんとあまり読んではいませんが とりあえず、製品番号と連番のフィールドを わければ解決の方向に進めると思います

共感・感謝の気持ちを伝えよう!

質問者からのお礼

pon_kotu様、回答ありがとうございます。 ただ、質問内容は極々簡略化してありますので、 テーブルの変更は実質的に無理です。

関連するQ&A

  • SQL 重複レコードの数え方

    例えば、テーブル名:test01のレコードhogeに、 XXXX XXXX YYYY ZZZZ XXXX YYYY XXXX とレコードに値が入っているとします。これを、 XXXX 3 YYYY 2 ZZZZ 1 の様に、各値毎の数を集計したいのですが、どうSQLを書いたら良いですか? 以上、宜しくご指導の程、お願い申し上げます。

  • 重複レコードの抽出について

    以下のようなテーブルからmailが重複していてnameの値が全て同じ値を持つレコードを取得するためのSQL文を教えてください。 mail | name ----------- aaa | 01 aaa | 01 aaa | 01 bbb | 02 bbb | 02 bbb | 01 ccc | 01 ccc | 01 ccc | 02 select * from test where mail in (select mail from test where mail group by mail having count(mail)>1) 上記のSQL文だと以下のデータが取得されてしまいます。 ↓ mail | name ----------- aaa | 01 ○ aaa | 01 ○ aaa | 01 ○ bbb | 02 × bbb | 02 × ccc | 01 × ccc | 01 × ○印のみ取得したいのですが、 SQL文をどのように修正すればよいのでしょうか。 よろしくお願いいたします。

  • 重複するレコードを調べるSQL

    重複するレコードを調べるSQL 初歩的な質問ですみません! 重複するレコードを調べるために以下のようなSQLを作ったのですが、 遅くて困っています。 もっと速くする方法があれば教えてください! 異なるカテゴリーでも商品コードが重複しているものがないかを探すSQLです。 SELECT A.商品コード, A.X, B.カテゴリー FROM (SELECT COUNT(商品コード) X, 商品コード FROM テーブルA WHERE 追加年月 = 201008 GROUP BY 商品コード) A, (SELECT 商品コード, カテゴリー FROM テーブルA WHERE 追加年月 = 201008 ) B " WHERE A.X >= 2 AND B.商品コード = A.商品コード

  • 2つの項目が重複するレコードを抽出する方法はありますか?

    MySQL4.1で既存データに対し複合キーを新しく設定したいのですが、 ALTER TABLE `test` ADD PRIMARY KEY (`a`,`b`) としても重複データが存在する為、作成できませんでした。 10万件あるテーブルから重複するレコードを手動で削除したいのですが、aとbが重複しているレコードだけ抽出するSQL文はありますでしょうか?

    • ベストアンサー
    • MySQL
  • AccessのSQL教えて下さい

    下記のような電話番号を重複データとして抜き出したいのですが ハイフォンを取り除くSQLを教えていただけませんか。 (重複データのパターン1) 072-612-xxxx 0726-12-xxxx (重複データのパターン2) 050-1234yyyy 050-1234-yyyy

  • 重複レコードの取得

    すみません。。重複レコードの取得方法に困っています。 やりたいのは以下です。 テーブルA 項目1| 項目2| 項目3| 11 | 11 | 01 | 12 | 11 | 02 | 13 | 11 | 04 | 14 | 11 | 04 | 上記の項目1は主キーです。 抽出したいのは下記のみです。 項目1| 項目2| 項目3| 13 | 11 | 04 | 14 | 11 | 04 | 色々SQLを組んで試しては見てるのですが。。。。 select * from テーブル where ((項目3) in (SELECT 項目3 FROM テーブル GROUP BY 項目3 having count(*)>1)) 上記SQLだと項目3を主キーごとにカウントしてるみたいなので 意図した結果が抽出されないのです・・・・・。 項目2と項目3を結合して重複のチェックをすればよいのか?? とも思いますがSQL自体が1本で完結したいので よく分からなくなってしまいました。。。。。 皆さんご教示宜しくお願い致します。

  • distinct で抽出したレコード件数

    MSaccessです。 氏名の重複可の住所録があります。 重複した氏名を1にカウントした全体のレコード数を求めるにはどうしたらよいでしょうか。 #SQLのみで取得したい。for・・など使わずに。

  • 重複データの集計方法を教えてください。

    テーブル名:テスト コード SEQ 0001  1 0001  2 0001  3 0002  1 0002  2 0002  3 0003  1 0003  2 0003  3 0003  4 0003  5 0003  6 0003  7 0003  8 0004  1 0004  2 0005  1 0005  2 0005  3 0005  4 0005  5 0005  6 0005  7 0005  8 0006  1 0006  2 0007  1 0007  2 こういったデータのテーブルがあります。 そこで、「コード」の重複件数が6件以下の データを集計したいのです。 これで、重複したコードの件数がでると思うのですが、 SELECT COUNT(コード) FROM テスト GROUP BY コード こういうイメージです。 3 3 8 2 8 2 2 6より多いデータは、6にして、それ以外のデータはそのままの値にしたいのです。 CASE WHEN aa > 6 THEN '6' ELSE aa END 上で書いたSELECTの結果を上記のCASEで使いたいのですが、 どのように記述すればよいのでしょうか? 下記のようにしてもうまくいきませんでした。 SELECT CASE WHEN aa > 6 THEN '6' ELSE aa END FROM (SELECT COUNT(コード) FROM テスト GROUP BY コード) as aa 最終的には、 3 3 6 2 6 2 2 となったものの合計を出したいです。 24がでればいいです。 よろしくお願いします。

  • キーが重複したレコードを無視してリストアする方法は?

    キーが重複したレコードがバックアップファイル内にあっても、それを無視して重複していないレコードだけをリストアする方法は無いでしょうか? 現在、osqlコマンドを用いてテーブルの既存データに追加する形でリストアするプログラムを作っているのですが、重複したレコードがあると処理が中断してしまうため、残った重複のないレコードを追加できずに困っています。 サーバはSQL Server 2000 使用言語はVB.NET になります。 ご教授宜しくお願い致します。

  • 重複レコードの合計について

    Access に詳しい方、教えて下さい。 下記のような2つのテーブルがあったとします。 コードテーブル 001 AAA 002 BBB 003 CCC 明細テーブル 001 ・・・ 002 ・・・ 001 ・・・ 001 ・・・ 002 ・・・ コードテーブルと明細テーブルをつきあわせてレコードの合計を 求めたいと思っています。(下記のような結果になるように) 001 3 002 2 003 0 重複クエリで出来るのかと思っていますが、なかなか分かりません。 どなたか分かる方いらっしゃいますでしょうか? どうかよろしくお願い致します。