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 に答える