使用案例选择列基于条件 - SQL Server

时间:2016-02-05 11:36:08

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

我希望根据条件选择基于Case的列。它工作正常,但我不知道如何为所选列返回正确的别名。

例如。

If I=1 then
I should select "L.id" with ColumnAlias as LeadId 
else 
I should select "sl.id" with ColumnAlias as ServiceLeadId

我的输出应该只包含一个具有正确别名的列,如下所示。

If I=1

LeadId 
1
2
3
...
...

If I<>1

ServiceleadId
1001
1002
1003
...
...

我试过以下

select
CASE WHEN @i = 1 Then
                  L.Id AS LeadId
                 Else

                  sl.id AS ServiceLeadId
end
from table

但是我收到了错误。

请建议我实现这一目标。

1 个答案:

答案 0 :(得分:3)

CASE将结果返回1列,因此它只能包含1个列名,例如:

SELECT CASE WHEN @i = 1 THEN L.Id ELSE sl.id END AS LeadId
FROM TblName

如果您想拥有2个不同的列名,则应该有单独的列:

SELECT CASE WHEN @i = 1 THEN L.Id END AS LeadId,
       CASE WHEN @i <> 1 THEN sl.id END AS ServiceLeadId
FROM TblName

<强>更新

根据您的评论,您可以使用IF代替CASE,例如:

DECLARE @i int = 1

IF (@i = 1)
BEGIN
    SELECT L.Id AS LeadId
    FROM TblName
END
ELSE
    SELECT sl.id AS ServiceLeadId
    FROM TblName
相关问题