我有我的程序设置允许用户选择一个站,然后选择两个日期之间,然后他们选择他们想要的转变。他们可以选择两种,一种或二种。首先是早上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