
SQL Serverで以下のようなテーブルからデータを取得しようと思っているのですが、うまく取得できません。
テーブル1 NEWS_TABLE
ニュースID(NEWS_ID)と都道府県ID(PREF_ID)が100件格納されています。
テーブル2 PREF_TABLE
都道府県ID(PREF_ID)と都道府県名(PREF_NAME)が格納されています。
ニュースの頻発するベスト4の都道府県をリストアップしたいのですが、以下のSQLだと問題なく取得できます。
SELECT
TOP 4
COUNT(A.NEWS_ID) AS COUNT
, A.PREF_ID
,(SELECT PREF_NAME FROM PREF_TABLE WHERE ID = A.PREF_ID) AS PREF_NAME
FROM
NEWS_TABLE AS A (NOLOCK)
WHERE A.NEWS_ID IN (1,2,3,4,5,6,7,8,9,10.....)
GROUP BY
A.PREF_ID
ORDER BY
COUNT DESC
ところが、以下だとエラーになってしまいます。
SELECT
TOP 4
COUNT(A.NEWS_ID) AS COUNT
, A.PREF_ID
,(SELECT PREF_NAME FROM PREF_TABLE WHERE ID = A.PREF_ID) AS PREF_NAME
FROM
NEWS_TABLE AS A (NOLOCK)
LEFT JOIN
PREF_TABLE AS B (NOLOCK)
ON
A.PREF_ID = B.PREF_ID
WHERE A.NEWS_ID IN (1,2,3,4,5,6,7,8,9,10.....)
GROUP BY
A.PREF_ID
ORDER BY
COUNT DESC
メッセージは以下
メッセージ 8120、レベル 16、状態 1、行 5
列 ****' は選択リスト内では無効です。この列は集計関数または GROUP BY 句に含まれていません。
2つ目の方が一般的のような気がするのですが、なぜエラーになるのか、2つ目の方法で解決策があるのか、教えて頂けないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
SQLのエラー(~付近に不適切な構文があります)
SQL Server
-
一部のカラムでdistinctし全てのカラムを取得
MySQL
-
-
4
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
5
GROUP BYを行った後に結合したい。
Oracle
-
6
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
7
オブジェクト参照がオブジェクト インスタンスに設定されていません というエラーについて
Microsoft ASP
-
8
SQL文で、合計が0のレコードを表示させないようにしたい。
SQL Server
-
9
副問合せの書き方について
SQL Server
-
10
DateTimePickerに値を入れたいのですが…
Visual Basic(VBA)
-
11
SUBSTRING 関数に渡した長さのパラメータが無効です。
SQL Server
-
12
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
13
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
14
クエリのキャンセルがいつになっても終わらない
SQL Server
-
15
INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい
その他(データベース)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
MS SQLServer のSQLで文字列の前にN:
その他(データベース)
-
18
ストアドプロシージャ_カーソルのヒット件数
その他(データベース)
-
19
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
20
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
バッチファイルからのBCP起動に...
-
nvarchar型で指定して文字列幅...
-
ACCESS2000ディスクまたはネッ...
-
Oracle 8i コンマ(,)を含むデ...
-
PL/SQLのコンパイル
-
クエリの存在チェック
-
SQL ServerのSQL実行時のエラー...
-
ACCESS ADOでupdateが効かない
-
PostgreSqlでFunctionの作成に...
-
エラー:823 重大度:24 状態...
-
エクセルマクロで指定範囲内の...
-
Access Excelへ出力時にエラー
-
エクセルからSQLサーバー ...
-
GROUP BYでエラーが発生
-
oracle パッケージの仕様?
-
SQL Loaderを使いたい
-
SQLサーバー接続 特定のPCがWin...
-
SQL2000Serverにアクセスするの...
-
SQL ServerにTCP/IPで接続出来ない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのエラー(~付近に不適切な...
-
Oracle 8i コンマ(,)を含むデ...
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
Access2000環境に対応するMid関...
-
sqlで文字列を最後に追加したい
-
何も表示されない実行時エラー...
-
バッチファイルからのBCP起動に...
-
ACCESS ADOでupdateが効かない
-
ACCESS2000ディスクまたはネッ...
-
エクセルのグループボックス枠...
-
オブジェクト名 '<table>' が無...
-
エクセルマクロで指定範囲内の...
-
VB6より長文INSERT文でORA1756...
-
SQLServerが存在しないか、アク...
-
エクセルからSQLサーバー ...
-
ACCESSで作成したアプリケーシ...
-
SQLServer・ストアドプロシージ...
-
クエリの存在チェック
-
分散トランザクションを開始で...
おすすめ情報