gpt4 book ai didi

tsql - 在带有 T-SQL 的 CASE 表达式中使用子查询的结果

转载 作者:行者123 更新时间:2023-12-04 00:07:40 29 4
gpt4 key购买 nike

我正在用一些 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

最佳答案

只需使用子查询作为您选择的来源:

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

顺便说一句,如果您只想在 COUNT 的输出中返回 0是 0,那么你甚至不需要使用 CASE陈述。

关于tsql - 在带有 T-SQL 的 CASE 表达式中使用子查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31028027/

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