• 締切済み

COUNT(DISTINCT *)がエラーになる理由を教えてください

以下のSQL文がエラーとなるのはなぜですか? SELECT COUNT(DISTINCT *) FROM 社員 SELECT DISTINCT * FROM 社員 ならエラーにならないのにどうしてでしょうか

みんなの回答

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

>>エラーとなるのはなぜですか? http://msdn2.microsoft.com/ja-jp/library/ms175997.aspx DISTINCT と一緒には使用できません。 と書いてあるので、「仕様だから」ダメなんです。 かな。

mimeso0719
質問者

お礼

回答ありがとうございます。 仕様だから、なんですね。

関連するQ&A

  • DISTINCT + COUNT

    みなさんこんにちは。 以下のようなSQL文のCOUNT関数を作りたいのですが、 うまい手法がわからず困っています。 SELECT DISTINCT Ta.会員ID, Tb.品番 FROM TABLE_A AS Ta LEFT JOIN TABLE_B AS Tb ON Ta.ID = Tb.ID ↑こいつのCOUNTですが、単純に SELECT COUNT(DISTINCT Ta.会員ID, Tb.品番) ~ とやるとエラーになってしまいます。 どうやってやればカウントできるのでしょうか? すごく初歩的なことだと思いますが、 ご助言お願いいたします。

  • count(1)とcount(*)の違い

    初心者です。 以下のSQL文の違い及びcount(1)の1が何を表しているのか 教えて頂けないでしょうか? select count(*) from table select count(1) from table また、参考しやすいサイト等ありましたら教えて頂けないでしょうか?

  • Select Distinctについて

    SQL文の質問です。フィールドがTable1に100つあるとします。 select distinct XYZ From Table1という文があるとします。 これだとXYZのフィールドしか参照していないことになると思います。 そうではなくて、他の99フィールドの値も参照(データにアクセスしたい)したいと思っています。 select distinct XYZ, * From Table1とSelect * from Table1みたいなことをやりましたがエラーが発生しました。他の99フィールドを参照する方法はあるでしょうか?

  • DISTINCTの使い方を教えて下さい

    Select 文で DISTINCT を記述すると結果(Count)は-1となってしまいます。 DISTINCTを外すと全件表示されます。 これは何がまずいのでしょうか ? 環境 DB=SQLserver 2000 + IIS 5.0 + ASP 例:Select DISTINCT TABLE1,TABLE2,TABLE3 FROM TABLE ちなみにdbをAccess で使用している時とクエリアナライザではOKでした。

  • count(*)のcountをとりたい

    現在、以下のようなテーブルを扱っているのですが、 +---------+ |accountid| +---------+ |   999| |   999| |   638| |   638| |   638| |   999| |   999| |   638| +---------+ を、ユニークな件数でとろうとしています。 現在は > select count(*) from TABLE group by accountid; +----------+ | count(*)| +----------+ |     4| |     4| +----------+ 2 rows in set (0.00 sec) などとして、「2 rows in set」を読むと言う方法なのですが、それだと人の手を介さないといけないのでどうにか出力結果をダイレクトに取得したいのです。 SQLサーバで使えるらしい select count(*) from (select count(*) from TABLE group by accountid) as AA; と言うSQL文を使っても無理だったので、どなたか方法をご存じないでしょうか???

    • ベストアンサー
    • MySQL
  • SELECT DISTINCTの結果件数をCOUNTする方法

    SQL SERVER 2005 EXPRESS のストアドプロシージャで、 SELECT結果の件数を、変数 @count に取得したいのですが DISTINCTの引数が複数あるのが原因なのか、上手くいきません。 目的はテーブル「TBL」から、COMとUSERの組み合わせの リストを抽出し、その件数を取得する事です。 テーブル名:TBL COM  USER --------------- 001  A 002  A 003  A 001  B 002  A 003  C 「COMとUSERの組み合わせで、重複するものは取らない」のならば  SELECT DISTINCT COM,USER  FROM TBL で、下記のような結果が得られます。 COM  USER --------------- 001  A 002  A 003  A 001  B 003  C で、この結果件数である「5」を取りたいのですが DECLARE @count int  SELECT @count = COUNT(DISTINCT COM,USER)  FROM TBL print @count と打っても失敗します。 ( )の括りやCOUNTの位置をいろいろと試したが出来ませんでした。 COUNT DISTINCT(複数項目)が出来ないのならば、 どうすればこの結果の件数を取得できるでしょうか? どうかご教授授くださいませ。よろしくお願いします。

  • countとdistinctを使ったSQL文ついて

    countとdistinctを使ったSQL文について VB2005+SQLSERVER2005で開発を行っています。 distinctとcountを組み合わせて抽出するようなSQL文になるのかなと思うのですが うまくいきません カラム maker:メーカ名が登録されている テーブル shohin カラムmakerの実際のデータ例 富士通 NEC 東芝 パナソニック NEC NEC パナソニック 抽出した結果の例 富士通    1 NEC     3 東芝     1 パナソニック 2 メーカー名とその件数が出力結果となります 以上ですがわかる方いらっしゃいましたらご回答お願いいたします。

  • distinct句を使わずレコード総計を求めたい

    DB初心者です。 DISTINCT句を使わずに、group by句を使って 重複データを除いたレコード総計を求めたいと思い、 下記の用にSQL文を書いたのですがうまくいきません。 oracleではなく、DB2を使っているのですがSQL文として 可能なのか教えていただければと思い質問を致しました。 <例> テーブル名:商品DB 商品名 a a b b c だったら、重複を除いたレコード数は3になりますが、 select count(*) from 商品DB group by 商品名 とすると 2 2 1 となり、それぞれの商品の合計数が出てしまうので select count(*) from ( select 商品名 from 商品DB group by 商品名) と副問合せ(でよいのでしょうか?)をしてみると 入力が予想されるトークンには "AS" が含まれている可能性があります。とエラーになってしまいました。

  • DISTINCTでは無理でしょうか?

    市区町村|コード| 杉並区 |22222| 杉並区 |22222| 杉並区 |77777| 豊島区 |88888| SQL文で、上記のデータから重複するコードは一つのカウントとしてまとめ、下記のように杉並区のデータを取得したいのですが、うまくいきません。どのように書けば良いでしょうか。 市区町村|CNT| 杉並区 |2 | 失敗SQL select DISTINCT 市区町村,コード, COUNT(*) as CNT from テーブル WHERE 市区町村 = '杉並区' GROUP BY 市区町村,コード

    • ベストアンサー
    • MySQL
  • Distinct使用時に0除算エラーが起こる

    初めて投稿します。よろしくお願いします。 現在、VB6とアクセス97で構築されたシステムのメンテナンスを行なっています。下記SQLの実行時に0で除算しましたのエラーが出ます。 select * from [ SELECT DISTINCT NO FROM 指示書]. AS NOリスト order by iif(NO = "0", 9999999 ,NO) 色々試してみましたが解決方法が見つからないので質問しました。 ちなみに、アクセス内で"SELECT DISTINCT NO FROM 指示書"というクエリを作成し実行しておくとエラーが出ずに正常に動作します。 よろしければ、ご教授よろしくお願いします。