我有我的程序設置允許用戶選擇一個站,然後選擇兩個日期之間,然後他們選擇他們想要的轉變。他們可以選擇兩種,一種或二種。首先是早上6點到下午4點,第二點是下午4點到3點。我總共有4個參數。我認爲我的程序沒有返回第二班的值,因爲不是16和3之間的所有值都大於開始和小於結束。例如下午6:00不少於3的結束小時,所以它不包含在輸出中。我如何實現這一目標?這裏是我的代碼:SSRS 2008報表生成器3.0:使用CASE和WHEN函數
DECLARE @StartHour INT
DECLARE @EndHour INT
SET @StartHour = CASE @TimeRange
WHEN 0 THEN 0 --Start of Overall--
WHEN 1 THEN 6 --1st Shif Start--
WHEN 2 THEN 16 --2nd Shift Start--
END
SET @EndHour = CASE @TimeRange
WHEN 0 THEN 24 --End of Overall--
WHEN 1 THEN 16 --End of First Shift--
WHEN 2 THEN 3 --End of Second Shift--
END
SELECT
Testerline1_CycleTimes.Station,
Testerline1_CycleTimes.StationEntry
WHERE
Testerline1_CycleTimes.Station LIKE @Station
AND Testerline1_CycleTimes.StationEntry Between @Start And @End
AND DATEPART(hh , Testerline1_CycleTimes.StationEntry) >= @StartHour
AND DATEPART(hh , Testerline1_CycleTimes.StationEntry) < @EndHour
我在這裏沒有看到問題,而且也沒有看到有效的SQL腳本。什麼是WHERE條款?你有兩個變量,它們如何以錯誤的順序顯示? – 2013-03-12 13:41:51
我只複製了與我的問題相關的代碼。它是在報表生成器中使用的T-SQL代碼,不知道這是否有所作爲。當我有我這樣的代碼時,它不會返回情況2的值,這應該是下午4點到3點。 – Newbie1331 2013-03-12 13:57:37
沒有更多細節很難弄清楚問題。也許用測試數據和整個查詢來設置一個SQL小提琴? – 2013-03-12 15:08:17