gpt4 book ai didi

sql - SELECT 语句中带有 if 比较的 TSQL CASE

转载 作者:行者123 更新时间:2023-12-03 07:10:56 25 4
gpt4 key购买 nike

我想在 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但似乎没有任何作用。

我也没有发现“<”和“>”比较有任何类似的问题。

任何帮助将不胜感激;)

最佳答案

请在外部选择中选择相同的内容。您无法在同一查询中访问别名。

SELECT *, (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) AS ranking
FROM(
SELECT registrationDate, (SELECT COUNT(*) FROM Articles WHERE Articles.userId = Users.userId) as articleNumber,
hobbies, etc...
FROM USERS
)x

关于sql - SELECT 语句中带有 if 比较的 TSQL CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14231353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com