如果有条件,如何使用声明变量从另一个表中选择数据?

时间:2018-02-21 07:23:13

标签: sql sql-server sql-server-2008

我做了选择查询,其中我想根据条件选择数据。为此,我声明了一个变量并在else部分中设置该变量的值。我想使用该变量进一步选择相同的其他部分我怎么能实现这一点?请帮助

declare @stateid int
select CASE WHEN MstCustomerAddressInfo.StateId is null 
                  THEN 24 
        ELSE set @stateid = MstCustomerAddressInfo.StateId
             select mststate.statecode from mststate where MstState.StateId = @stateid 
       END AS StateCode

1 个答案:

答案 0 :(得分:2)

不,你不能在SET表达式中包含CASE。即使你不能有多个陈述。

您可以编写如下相同的查询。

declare @stateid int 

select CASE 
         WHEN MstCustomerAddressInfo.StateId is null THEN 24 
         ELSE 
       -- set @stateid = MstCustomerAddressInfo.StateId 
       (select mststate.statecode 
        from   mststate 
        where  MstState.StateId = MstCustomerAddressInfo.StateId) 
       END AS StateCode 
from   [Your_Table]