Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何动态添加列?_Sql_Sql Server_Sql Server 2008_Tsql_Sql Server 2012 - Fatal编程技术网

Sql 如何动态添加列?

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

我面临着不同的问题。在select查询中,我想根据其他列的值动态添加一个临时列

我有两个专栏

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,你找到我了吗,先生