根据条件选择使用大小写的列-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