사용자가 방송국을 선택한 다음 두 날짜 사이를 선택하도록 허용하는 프로그램을 설정 한 다음 원하는 시프트를 선택합니다. 그들은 Both, First, Second를 선택할 수 있습니다. 첫 번째는 오전 6시 - 오후 4시이며 두 번째 시간은 오후 4시 - 오전 3시입니다. 총 4 개의 매개 변수가 있습니다. 16에서 3 사이의 모든 값이 시작보다 크고 끝이 작지 않기 때문에 프로그램에서 두 번째 시프트에 대한 값을 반환하지 않는다고 생각합니다. 예를 들어 오후 6시는 종료 시간 3보다 작지 않으므로 출력에는 포함되지 않습니다. 이것을 어떻게 성취합니까? 내 코드는 다음과 같습니다.SSRS 2008 보고서 작성기 3.0 : 사례 및 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 절은 무엇인가? 두 변수가 있는데 어떻게 잘못된 순서로 표시 할 수 있습니까? –
나는 내 문제와 관련된 코드 만 복사했습니다. 보고서 작성기에서 사용되는 T-SQL 코드입니다. 차이가 있는지 여부는 확실하지 않습니다. 이런 식으로 코드를 작성하면 케이스 2에 대한 값을 반환하지 않습니다. 케이스 2는 오후 4시에서 3시 사이에 있어야합니다. – Newbie1331
자세한 내용이 없으면 문제를 파악하기 어렵습니다. 아마도 테스트 데이터와 전체 쿼리로 SQL Fiddle을 설정해야할까요? –