• ベストアンサー

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

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

  • ベストアンサー
  • junbei
  • ベストアンサー率55% (5/9)
回答No.2

以下のように書き換えてください。 構文は通ります。 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は許してくれないんですね。。。

kaji2006
質問者

お礼

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

その他の回答 (2)

noname#140971
noname#140971
回答No.3

SQL Server 2000 では不能は撤回! お恥ずかしながら、サブクエリに関しての勉強不足でした。 ___|(expession)| ---|------------ __1|__________6| No2さんの回答を実行すると目的を達しました。 ※ゴミ回答、お詫びです。

noname#140971
noname#140971
回答No.1

[SQL Server 2005]では許される書き方だが[SQL Server 2000]では不能かと思います。 が、 Select Count(DISTINCT 列1+'/'+列2) FROM A これで目的は達成できます。

kaji2006
質問者

お礼

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