
少々混乱してるので変なこと書いてるかもしれません
SQLServer2008R2 にて
複数のデータ列があるデータベースが存在しています
データの重複を除いてその件数を取得したいのですが
重複チェックしたいデータ列が1つだけではないため
COUNT(DISTINCT データ列) は使えません
以下の様なグループ化を行う事でデータそのものは取得できているのですが
求めたいのはデータではなくて対象になるデータ件数となります
SELECT
列1、列2、列3
FROM データベース
GROUP BY
列1、列2、列3
上記の結果を COUNT 関数に渡すような形になると思っています
(これがそもそも方向性が違うのかも)
調べてはいるのですがその書き方がわかりません
どのようにすればいいのでしょうか
No.4ベストアンサー
- 回答日時:
例えば。
重複の無いテーブル (列は 列1、列2、列3 ) で、行数を数えるなら
SELECT COUNT(*) FROM 重複の無いテーブル
になりますよね?
サブクエリの使い方で、わかりやすいのは、FROM やJOINで「テーブルの代わりに」サブクエリを使うというものではないでしょうか。
SELECT COUNT(*) FROM サブクエリ as W -- 別名を付ける
サブクエリ自体は、いくつか制限があるものの、基本は「普通のクエリを()で囲ったもの」
となれば、あとはわかるのでは?

No.3
- 回答日時:
SELECT
COUNT(CONVERT(Char,列1)+CONVERT(Char,列2)+CONVERT(Char,列3)) AS 件数
,列1,列2,列3
FROM テーブル
GROUP BY 列1,列2,列3
数億年ぶりなSQLの上、手元にSQLServerが無いっていう。要は全部文字列にして連結、それをカウントすればいいんじゃ?という考え方です。COUNTってGROUP BYに入れなくていいんだっけ?
未検証の上、Convert内のデータ型は適当。なんでISNULL含めエラー回避や空白での文字数や桁数調整は自己責任で。
どうでもいいけどFROM句の後に"データベース"とかどうなんだろう?
回答ありがとうございました
No4 さんの方法で解決しましたのでまだ試していませんが
別途試してみたいと思います
>FROM句の後に"データベース"とかどうなんだろう?
テーブル名の間違いでした
No.2
- 回答日時:
データ列の作り方がまずいばあい、1つのSQLではうまく処理ができないことが多いです。
通常は、ワークテーブルを作って、重複を取り除いたデータをそちらに流し込む処理などを行い、その後、ワークテーブルに対してSQLで集計したりします。
ワークテーブルを作るのが難しいときは、そのためのプログラムをVBとかC#などで作成して、データ加工してワークテーブルにデータを格納します。
「なんとか、工夫して1つのSQLで答えを得たい!」という気持ちはわかりますし、がんばれば、そういうSQLが組めることもあるとは思いますが、普通の人であるなら、手間がかかっても上記のような方法でやるのがいいと思います。
回答ありがとうございます
自作でプログラム作ればできるのはわかっているんですが
(そのデータベースに書き込み処理してるのは自作プログラムです)
今回は複数データベース結合やテスト環境下におけるデータ重複の
確認を目的としているため そのための自作プログラムを作るのではなく
SSMS から単純なクエリの実行だけで何とかできないものかと思っています
SSMS 使ってるのであれば 結果とメッセージが表示され メッセージの方確認すれば
データ件数がわかることも承知しています
どうしても無理なようでしたら現状のままで我慢しようかと考えています
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
列のヘッダーを含めるのをデフ...
-
UPDATE文のWHERE条件に他のテー...
-
列番号による項目の取得について
-
Access:クエリーにて集計後に...
-
SQLで列名を変数にできないでし...
-
SQLです教えてくださいお願いし...
-
DISTINCTで選択した項目以外で...
-
SQLite3 の UpdateCommand エラー
-
ふと疑問
-
ストアドプロシージャに複数のS...
-
Accessでの全データから空白削除
-
フィルターかけた後、重複を除...
-
差し込み後、元データを変更し...
-
エクセルで最後の文字だけ置き...
-
エラー 1068 (42000): 複数の主...
-
Outlook 送受信エラー
-
SQLで特定の項目の重複のみを排...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
UPDATE文のWHERE条件に他のテー...
-
SQLで列名を変数にできないでし...
-
列番号による項目の取得について
-
列のヘッダーを含めるのをデフ...
-
Access:クエリーにて集計後に...
-
【VB.NET】日付型の列にNULLを...
-
SQLによる"あいうえお"順でソー...
-
テーブル列数とデータファイル...
-
Excel の簡単な操作について
-
ふと疑問
-
特定の文字列で列を区切るには?
-
v$processのPROGRAM列に関する質問
-
複数列の最大値を求めたい
-
エクセルでワイルドカード検索...
-
Accessでの全データから空白削除
-
列の数字を足し合わせたい
-
EXCEL 集計の方法
-
SQL文の関数らしいのですが、意...
おすすめ情報