gpt4 book ai didi

sql - SQL 子查询中的局部变量赋值

转载 作者:行者123 更新时间:2023-12-02 01:56:05 25 4
gpt4 key购买 nike

我正在尝试执行包含多个子查询的 SQL 查询,然后将其中的某些部分分配给局部变量。不幸的是,我在语法正确方面遇到了问题。

我的查询如下

declare @temp1 varchar(200)
declare @temp2 varchar(200)

select case when cnt>0 then 'RouteA' else 'RouteB' end as Route from
( select
(
(select case when (req.Avg > 10) then 1 else 0 end from
(select count(val) as Avg from T1) req) +

(select case when (req.Avg > 10) then 1 else 0 end from
(select count(val) as Avg from T2) req)
) as cnt) t

我需要做的是将以下子查询的值分配给@temp1:

(select case when (req.Avg > 10) then 1 else 0 end from
(select count(val) as Avg from T1) req)

和这个对 temp2 的子查询:

(select case when (req.Avg > 10) then 1 else 0 end from
(select count(val) as Avg from T2) req)

我尝试过多种方法,但总是出现语法错误。

如有任何帮助,我们将不胜感激!

谢谢,查理

最佳答案

您不能在同一选择中混合使用变量赋值和结果集。你的 SQL 还有其他问题。我认为您不能从 count() 的结果中进行选择。

为什么不分配变量,然后在需要时对它们进行选择?

IF (select count(val) as Avg from T1) > 10 
SET @temp1 = 1
ELSE
SET @temp1 = 0

如果需要,您也可以在选择中执行此操作

SELECT @temp1 = CASE WHEN (select count(val) as Avg from T1) > 10 THEN 1 ELSE 0 END

关于sql - SQL 子查询中的局部变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19870548/

25 4 0
文章推荐: asp.net-web-api - Breeze - 对象 # 中的扩展结果没有方法 'getProperty' 查询失败