根据条件选择使用大小写的列-SQL Server

根据条件选择使用大小写的列-SQL Server,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,当基于条件时,我希望根据大小写选择列。工作正常,但我不知道如何为所选列返回正确的别名 比如说 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 Serv

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

比如说

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
...
...
但我犯了个错误


请向我推荐实现此目的的任何想法。

CASE
在一列中返回结果,因此它只能容纳一个列名,例如:

SELECT CASE WHEN @i = 1 THEN L.Id ELSE sl.id END AS LeadId
FROM TblName
如果要有两个不同的列名,则应具有单独的列:

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

它只返回我知道的一列,但我只需要一列,带有基于条件的动态别名。是否可以在一个SQL中执行?我认为这是不可能的。“但我遇到了一个错误。”如果在问题中包含错误,会不会要求太多?任何特定的查询都会生成具有相同“形状”的结果集-列的数量、名称和类型。
SELECT CASE WHEN @i = 1 THEN L.Id END AS LeadId,
       CASE WHEN @i <> 1 THEN sl.id END AS ServiceLeadId
FROM TblName
DECLARE @i int = 1

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