SELECTでCASE文を使いたいです。
ユーザー テーブルから選択し、(1 つの属性として) ネストされた SQL も使用します。
SELECT
registrationDate,
(SELECT COUNT(*) FROM Articles WHERE userId = Users.userId) as articleNumber,
hobbies, ...
FROM USERS
次に、ユーザーのランクを取得するために CASE ステートメントを実行したいと思います (ランクは articleNumber に依存します)。
私はこのように試しました:
SELECT
registrationDate,
(SELECT COUNT(*) FROM Articles WHERE Articles.userId = Users.userId) as articleNumber,
ranking =
CASE
WHEN articleNumber < 2 THEN 'Ama'
WHEN articleNumber < 5 THEN 'SemiAma'
WHEN articleNumber < 7 THEN 'Good'
WHEN articleNumber < 9 THEN 'Better'
WHEN articleNumber < 12 THEN 'Best'
ELSE 'Outstanding'
END,
hobbies, etc...
FROM USERS
解析してもエラーは表示されませんが、実行しようとするとエラーが発生します。
メッセージ 207、レベル 16、状態 1、プロシージャ GetUserList、行 XY
列名 'articleNumber' が無効です。
CASE はネストされた SELECT を「認識」していないと思います。
SQL Server 2008 - Case / If statement in SELECT Clauseのような他のいくつかのソリューションを手伝いまし たが、何も機能していないようです。
「<」と「>」の比較でも同様の問題は見つかりませんでした。
どんな助けでも大歓迎です;)