2012-06-08 37 views
2

這可能聽起來很奇怪,但我有一個連接兩個表的查詢。我使用了一個IF語句來決定返回的內容。一條路徑按原樣運行查詢/連接,另一條路徑需要返回第一列中的所有數據,但只返回具有空值的列名稱。這裏的查詢我現在有:我如何確保select語句爲特定列返回空值?

declare @Date DATE = '06/07/2012' 
IF @DATE >= GETDATE()  
    BEGIN 
     SELECT DisplayName, '' [RegularHours], ''[OvertimeHours] 
     FROM Sites 
     ORDER BY DisplayName 
    END 
    ELSE 
     SELECT sites.DisplayName, hrs.SiteDate, hrs.RegularHrs, hrs.OverTimeHrs 
     FROM Sites sites 
     left join SiteHours hrs on sites.SiteID = hrs.SiteID 
     ORDER BY DisplayName 

什麼使我感到緊張的是,第二和第三列沒有價值可言,甚至不爲NULL。我擔心這會在稍後造成問題。有任何想法嗎?

回答

5

如果我理解正確的問題,我認爲你可以這樣做:

SELECT DisplayName, NULL as 'RegularHours', NULL as 'OvertimeHours' 
+1

除了我不會用'。'單quotes''作爲列/別名分隔符 - 這句法已被棄用。你應該在需要的地方使用'[方括號]'(例如,帶有空格的列,以數字或其他非字母字符或保留字/關鍵字開頭)。在這種情況下,不需要別名分隔符。 –

+2

您可能想'CAST'NULL,以便數據類型與第二個查詢的列匹配。 – HABO

+0

這兩個好記的,謝謝。 – Porco