2014-07-17 2 views
1

--This 오늘의 일을 기준으로 난에서 주문 날짜와 판매 테이블이 나는 노력이 몇 번에 실패한 SQL autoselecting 날짜 범위는 SQL을 사용하는 주

,

다음 형식 '2014-05-15 00 : 00 : 00.000'

@today가 금요일보다 작 으면 지난 주 날짜 범위를 표시하고 @ 토요일은 토요일 인 경우에 실행되는 보고서가 필요합니다. 또는 일요일,이 주 날짜 범위를 사용하십시오.

여러분의 마음의 콘텐츠에

딘에게 사전에 필드를

+0

''- 당신이 @today은 * 금요일 또는 금요일보다 * 더 적은 경우'말을 의미 했 ... '? 또한 지금까지 무엇을 얻었습니까? 특히, 요일에 관계없이 범위를 선택하는 방법은 무엇입니까? –

+0

'오늘'이 금요일 (예 : 주일 숫자로 5) 인 경우 '오늘'<5 인 경우 'StartOFPrevWeek'과 'EndOfPrevWeek'사이의 주문일 '오늘'> 5 인 경우 'StartOfThisWeek'과 ' 'EndOfThisWeek'. 나는 절의 구문과 매개 변수를 정의하는 방법에 어려움을 겪고있다. – JustAnAverageSQLuser

+0

오늘 매개 변수를 int로 선언했습니다. – JustAnAverageSQLuser

답변

2

비틀기를 SalesOrder를하고 주문일

감사를 참조 (올바른 출력으로 메시지를 표시합니다 SQL Server Management Studio에서 실행). PRINT 연산자를 당신의 SELECT 문을 필터링하고 제거 할 변수를 사용 @today 금요일보다 작 으면 ...

DECLARE @ReportDate DATETIME 
DECLARE @StartOfWeek DATETIME 
DECLARE @DayOfWeek INT 

SET @ReportDate = '2014-05-15 00:00:00.000' --This will be your variable in report builder 
SET @DayOfWeek = DATEPART(dw,@ReportDate) 

/* 
Take away the day of the week from the report date to 
get the beginning of that week. 
*/ 

--Adjust the +1 to mark the start of your week (ie. +2 makes Monday the start) 
SET @StartOfWeek = DATEADD(dd, (-(@DayOfWeek) + 1), @Reportdate) 

--Now do stuff based on the report date (set the beginning of the week) 
IF @DayOfWeek BETWEEN 2 AND 5 --Friday is day 6 (Sunday is first day in SQL and the BETWEEN clause is inclusive) 
BEGIN 
    PRINT 'Monday to Thursday' --This line can be removed 
    /* Now minus 7 to get the beginning of the previous week */ 
    SET @StartOfWeek = DATEADD(dd, -7, @StartOfWeek) 
END 
--------------------------------------------------- 
/* 
This entire box is optional (can be removed) but just for demonstration purposes to 
show that the date stuff works 
*/ 

IF @DayOfWeek = 6 --Friday is day 6 
BEGIN 
    PRINT 'Friday' 
END 
IF @DayOfWeek IN (7,1) --Saturday day 7, Sunday day 1 
BEGIN 
    PRINT 'Saturday or Sunday' 
END 
--------------------------------------------------- 

--This is where your SELECT statement goes (instead of PRINT operators below) 
PRINT 'StartOfWeek = ' + CAST(@StartOfWeek AS NVARCHAR(255)) 
PRINT 'EndOfWeek = ' + CAST(DATEADD(dd,7,@StartOfWeek) AS NVARCHAR(255)) 
+0

감사합니다. 그것을 시험해보고 잘하면 당신을 더 이상 괴롭히지 마라! – JustAnAverageSQLuser

+0

@JustAnAverageSQLuser이 솔루션이 효과가 있습니까? – twoleggedhorse