SQL存储过程:如何在存在的情况下避免重复语句...然后

时间:2014-06-10 09:04:41

标签: sql sql-server-2008 stored-procedures

这适用于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是相同的,有没有更好的方法呢?

2 个答案:

答案 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 ...

我希望这有帮助。