我希望根据条件选择基于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
但是我收到了错误。
请建议我实现这一目标。
答案 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