みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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で実現したい場合はどのように記述すればよろしいでしょうか?

投稿日時 - 2007-08-31 14:42:37

QNo.3303227

困ってます

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

以下のように書き換えてください。
構文は通ります。

SELECT COUNT(*) FROM (SELECT 列1,列2 FROM 表A GROUP BY 列1,列2)

SELECT COUNT(*) FROM (SELECT 列1,列2 FROM 表A GROUP BY 列1,列2) AS WK

サブクエリの別名が付いていないのをSQL Serverは許してくれないんですね。。。

投稿日時 - 2007-09-01 14:57:08

お礼

ご回答ありがとうございます。
サブクエリに名前をつけるだけで…目からウロコです!
早速多用させていただきます。ありがとうございました。

投稿日時 - 2007-09-03 10:48:24

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

SQL Server 2000 では不能は撤回!
お恥ずかしながら、サブクエリに関しての勉強不足でした。

___|(expession)|
---|------------
__1|__________6|

No2さんの回答を実行すると目的を達しました。

※ゴミ回答、お詫びです。

投稿日時 - 2007-09-01 18:54:28

[SQL Server 2005]では許される書き方だが[SQL Server 2000]では不能かと思います。
が、

Select Count(DISTINCT 列1+'/'+列2) FROM A

これで目的は達成できます。

投稿日時 - 2007-08-31 18:28:41

お礼

ご回答ありがとうございます。
SQL Server2005を使用していますが、確認できました。

投稿日時 - 2007-09-03 10:47:05

あなたにオススメの質問