3

我正在尝试执行包含多个子查询的 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)

我已经尝试了多种方法,但不断收到语法错误。

任何帮助,将不胜感激!

谢谢你,查理

4

1 回答 1

2

您不能在同一个选择中混合变量赋值和结果集。您的 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
于 2013-11-09T00:02:26.460 回答