2013-01-21 49 views
0

上午......TSQL - IF ...然後else和case上的日期有腦凍

我有4個狀態日期即當地位上的客戶端記錄所改變,我需要再查詢數據並找出客戶在特定日期的狀態。

例如數據

客戶端安裝日期直播日期截止日期結束日期

0001 12年1月1日12年10月1日23/02/12 15/11/12

技術12年8月10日11/11/12

0003 12年11月12日

所以對於31/12/12那麼0001的日期將表明封閉狀態,技術會現場,0003將是安裝程序。

我只想返回該日期的客戶端和狀態。所以在31/12/12

我會得到 0001閉 技術活 0003安裝

我用這個情況,但它出錯的地方,因爲它似乎嘗試的結果將返回我一樣地位,我可以看到爲什麼它不起作用,但我的小頭腦不能找到一種方法來使其工作。這來自另一個提取並插入到#Temp表中的查詢。

CASE 
WHEN #TempOutput.[System Setup] BETWEEN @Start and @End THEN 'Prospect' 
WHEN #TempOutput.[Prospect to Live] BETWEEN @Start and @End THEN 'Live' 
WHEN #TempOutput.[Live to Terminal] BETWEEN @Start and @End THEN 'Terminal' 
WHEN #TempOutput.Closing BETWEEN @Start and @End THEN 'Closed' 
END 

這就像第一步,因爲我需要循環顯示每個客戶端在一段時間內的狀態。所以如果是每週的時間段,那麼它需要根據入場日期循環52次......我可以做到這一點! LOL

任何幫助讚賞!

回答

0
SELECT Client, 
CASE 
    WHEN [Closed] <= @GivenDate THEN 'Closed' 
    WHEN [Closing] <= @GivenDate THEN 'Closing' 
    WHEN [Live to Terminal] <= @GivenDate THEN 'Terminal' 
    WHEN [Prospect to Live] <= @GivenDate THEN 'Live' 
    ELSE 'Prospect' 
END Status 
FROM #TempOutput 
WHERE [System Setup] <= @GivenDate 
+0

哦,地獄..錯的方式!知道這是簡單的事情!你是一個傳奇!!!!!!!!謝謝 – user1966849

+0

我有沒有提到我愛你! :o) – user1966849

+0

哇,尼克'user1966849'愛我! :) –