Ben*_*Ben 2 t-sql syntax sql-server-2005 case subquery
我正在编写带有一些CASE表达式的查询,它输出帮助数据列,这些列可以帮助我确定是否需要执行特定操作。我想知道是否可以以某种方式将子查询的结果用作输出,而不必两次执行相同的查询(介于之间WHEN (subquery) THEN和之后的结果THEN)
下面的虚拟代码描述了我的追求。能做到吗?我正在查询MS2005 SQL数据库。
SELECT 'Hello StackOverflow'
,'Thanks for reading this question'
,CASE
WHEN
(
SELECT count(*)
FROM sometable
WHERE condition = 1
AND somethingelse = 'value'
) > 0 THEN
-- run the query again to get the number of rows
(
SELECT count(*)
FROM sometable
WHERE condition = 1
AND somethingelse = 'value'
)
ELSE 0
END
SELECT 'Hello StackOverflow'
,'Thanks for reading this question'
,CASE
WHEN
(
SELECT count(*)
FROM sometable
WHERE condition = 1
AND somethingelse = 'value'
) AS subqry_count > 0 THEN
-- use the subqry_count, which fails... "Incorrect syntax near the keyword 'AS'"
subqry_count
ELSE 0
END
Run Code Online (Sandbox Code Playgroud)
只需将子查询用作您从中选择的源:
SELECT 'Hello StackOverflow'
,'Thanks for reading this question'
,CASE subqry_count.Cnt
WHEN 0 THEN 0
ELSE subqry_count.Cnt
END
FROM ( SELECT count(*) AS Cnt
FROM sometable
WHERE condition = 1
AND somethingelse = 'value'
) subqry_count
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果您的输出COUNT是0,则只返回0,那么您甚至不需要使用CASE语句。