基于参数的SQL条件联合

时间:2018-01-19 01:18:14

标签: sql sql-server conditional union

我有这个查询,它接受3个参数,StrParameter1是我想要完成的关键。

SELECT  ai.strName,
ai.strId,
ai.lngBKey,
ci.strFormattedId,
ci.lngAKey,
ts.dtmPeriod,
ts.strT2Type,
ts.strImpact,
ts.curAmount,
ts.curBalance 

FROM    TBlCInfo ci,
tblAInfo ai,
tblTStage ts 

WHERE   ci.lngAKey    =  ai.lngAKey 
AND     ai.lngBKey    =  ts.lngBKey 
AND     ts.lngVersion    =  0 
AND     ts.blnReversed   =  0 
AND     ai.strType   =   @StrParameter1
AND     ts.dtmPeriod  >= @DtmParameter2
AND     ts.dtmPeriod  <= @DtmParameter3

我想将此查询与另一个查询结合起来,但只有当StrParameter1等于让我们说“AAAA”时。否则,我只希望触发查询的顶部。在其他30种情况下,我不需要联盟,但只需要1。

Query 1

If StrParameter1 = 'AAAA' Then
    UNION
          QUERY 2

1 个答案:

答案 0 :(得分:3)

您可以使用以下模式来执行您要查找的内容

declare @param varchar(4) = 'AAAA'

select *
from MyTable
union
select *
from MyOtherTable
where @param = 'AAAA'

在这种情况下,如果@param是'AAAA',联合将接收到,如果不是,第二个查询将不会返回任何结果。

因此,您无需更改查询。