我想在SELECT语句中使用CASE语句。
我从用户表中进行选择,并且(作为一个属性)我还使用嵌套SQL:
SELECT
registrationDate,
(SELECT COUNT(*) FROM Articles WHERE userId = Users.userId) as articleNumber,
hobbies, ...
FROM USERS
然后我想要做一个CASE语句来获取用户的等级(等级取决于文章数量)。
我尝试了这样:
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
解析没有错误,但是当我尝试运行它时出现错误:
Msg 207, Level 16, State 1, Procedure GetUserList, Line XY
Invalid column name 'articleNumber'.
我猜CASE语句不“识别”我的嵌套SELECT。
我已经尝试了一些其他的解决方案,比如SQL Server 2008 - Case / If statements in SELECT Clause,但是似乎都不起作用。
我也没有找到任何类似于“<”和“>”比较的问题。
非常感谢您的任何帮助;)