2015-12-10 22 views
1

我面臨着不同類型的問題。在select查詢中,我希望基於其他列值快速添加臨時列。如何在飛行中添加列?

我有2列

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] 
+2

所以你只是想改變列的別名,而不是改變選擇的實際列? – Dane

+0

而不是更改列名,使用值作爲單個列名,您已知道該列中的值是什麼。有些事情你想要其他的東西? – Ajay2707

+1

如果前3行'IsOpeningClosingDate'爲1,其餘記錄爲0,那麼應該輸出什麼?因爲你談論的是列「別名」,這是整個數據列的名稱。無法在「逐行」基礎上進行更改。 –

回答

3

我建議返回三列。然後你就可以在應用端獲取值:

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]; 

或者,你可以只取HearingDateIsOpeningClosingDate,做在Python的比較。

重要的一點是SQL查詢中的列由SELECT修復。您不能在查詢中有條件地更改列的名稱或類型。

+0

你只是做了我的工作(Y)查詢作品完美 –