Sql 如何动态添加列?
我面临着不同的问题。在select查询中,我想根据其他列的值动态添加一个临时列 我有两个专栏Sql 如何动态添加列?,sql,sql-server,sql-server-2008,tsql,sql-server-2012,Sql,Sql Server,Sql Server 2008,Tsql,Sql Server 2012,我面临着不同的问题。在select查询中,我想根据其他列的值动态添加一个临时列 我有两个专栏 IsOpeningClosingDateToo (tinyint), HearingDate Date 现在我想检查如果IsOpeningClosingDate=1,那么 Select HearingDate, HearingDate as 'OpeningDate' 如果IsOpeningClosingDate=2 Select HearingDate, HearingDate as 'Closi
IsOpeningClosingDateToo (tinyint),
HearingDate Date
现在我想检查如果IsOpeningClosingDate=1,那么
Select HearingDate, HearingDate as 'OpeningDate'
如果IsOpeningClosingDate=2
Select HearingDate, HearingDate as 'ClosingDate'
我尝试过这样做,但失败了:
SELECT
,[HearingDate]
,CASE [IsOpeningClosingDate]
when 1 then [HearingDate] as OpeningDate
When 0 then [HearingDate] as ClosingDate
end as 'test'
]
FROM [LitMS_MCP].[dbo].[CaseHearings]
我建议返回三列。然后,您可以在应用程序端获取值:
SELECT HearingDate,
(CASE WHEN IsOpeningClosingDate = 1 THEN HearingDate END) as OpeningDate,
(CASE WHEN IsOpeningClosingDate = 0 THEN HearingDate END) as ClosingDate
FROM [LitMS_MCP].[dbo].[CaseHearings];
或者,您可以只获取HearingDate
和IsOpeningClosingDate
并用Python进行比较
重要的一点是,SQL查询中的列是由
SELECT
固定的。您不能在查询中有条件地更改列的名称或类型。因此,您只想更改列的别名,而不想更改所选的实际列?与其更改列名,不如使用值作为单个列名,因为您已经知道该列中的值。您想要其他东西吗?如果前3行IsOpeningClosingDate
为1,其余记录为0,那么您的输出应该是什么?因为您谈论的是列“alias”,它是整个数据列的名称。“逐行”更改是不可能的。@Krishnajrana这可以由IsopeningClosingDateTo列确定,每行都会有所不同。@Dane,你找到我了吗,先生