【发布时间】:2015-09-10 17:49:06
【问题描述】:
我正在编写一个带有一些 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
【问题讨论】:
-
我不确定我是否在这里忽略了一些重要的东西,但是如果输出是计数或 0,为什么不直接输出计数,在任何情况下,计数都是 0没有匹配的行...?
-
你完全正确@MartinParkin。我有点卡在
CASE解决方案中,因为我想输出类似No Action Required的东西。但是 0 会很好。感谢您保持愚蠢和简单;) -
没问题 - 我添加了一个答案,它允许您以您想要的方式使用查询。现在你可以做任何一种方式:)
-
我已接受您的回答。尽管如此,它现在更容易修复。再次感谢。祝你有美好的一天
标签: tsql sql-server-2005 syntax subquery case