少々混乱してるので変なこと書いてるかもしれません
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excelで連続して重複する行数の違う列を参照する方法 5 2023/04/23 06:15
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Excel(エクセル) 指定した条件でTRANSPOSE関数を使う 5 2023/08/18 19:45
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Excel(エクセル) エクセル関数のスペシャリストの方、教えてください。 写真のように A列にはデータ C列にはデータの中 7 2022/04/09 00:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT 文 GROUP での1件目を...
-
外部参照してるキーを主キーに...
-
SQLで列名を変数にできないでし...
-
列のヘッダーを含めるのをデフ...
-
UPDATE文のWHERE条件に他のテー...
-
【VB.NET】日付型の列にNULLを...
-
項目名に大文字と小文字の混在...
-
SQLによる"あいうえお"順でソー...
-
テーブル列数とデータファイル...
-
Accessのリストボックスについて
-
特定の列だけをGROUP BYしたい時
-
複数列の最大値を求めたい
-
SQLでn番目からm番目を取得したい
-
”+”の符号をつける方法
-
accessで複合キーの処理が遅い
-
列番号による項目の取得について
-
ストアドプロシージャに複数のS...
-
DB2のSQL
-
v$processのPROGRAM列に関する質問
-
Access:クエリーにて集計後に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT 文 GROUP での1件目を...
-
外部参照してるキーを主キーに...
-
列のヘッダーを含めるのをデフ...
-
SQLで列名を変数にできないでし...
-
Access:クエリーにて集計後に...
-
列番号による項目の取得について
-
UPDATE文のWHERE条件に他のテー...
-
【VB.NET】日付型の列にNULLを...
-
テーブル列数とデータファイル...
-
特定の列だけをGROUP BYしたい時
-
伝票番号、品番、在庫としてマ...
-
SQLについて質問です。 Aという...
-
SQLによる"あいうえお"順でソー...
-
項目名に大文字と小文字の混在...
-
SQLについて質問です。 テーブ...
-
複数列の最大値を求めたい
-
SQLについて質問です。 テーブ...
-
v$processのPROGRAM列に関する質問
-
Accessでの全データから空白削除
-
特定の文字列で列を区切るには?
おすすめ情報