【发布时间】:2012-12-23 06:31:48
【问题描述】:
我想在 SELECT 中使用 CASE 语句。
我从用户表中选择,并且(作为一个属性)我还使用嵌套 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 statements in SELECT Clause 但似乎没有任何效果。
我也没有发现''比较的任何类似问题。
任何帮助将不胜感激;)
【问题讨论】:
标签: sql sql-server-2008 tsql select case