这适用于MS Sql Server 2008
我有一个像
这样的存储过程Select
case when exists (select top 1 ID from table.....)
then (select top 1 ID from table.....)
As COLUMN1
.....
以上不断重复其他列
问题: 因为WHEN和THEN中的sql是相同的,有没有更好的方法呢?
答案 0 :(得分:1)
您提供的有关查询其余部分的信息很少。我认为交叉申请将解决问题:
select coalesce(t1.ıd, . . .)
from <whatever> cross apply
(select id from table where . . . ) t1
. . .
可能有更简单的解决方案,但这适用于一般情况,包括相关子查询。
答案 1 :(得分:0)
尝试这个逻辑:
declare @a int
SElect top 1 @a = ID from Table Where ....
select case when @a IS not null then @a ELSE ...
我希望这有帮助。