2014-03-01 2 views
1

월요일의 첫 번째 요일 및 일요일의 마지막 요일 형식으로 연도 매출을 출력해야한다는 요구 사항이 있습니다.판매 연도의 주별로 그룹화

테이블 구조는 다음과 같습니다.

SalesId | 대표자 | DateOfSale.

다음은 시도한 내용이지만 올바른 결과를 제공하지는 않습니다. 카운트가 주어진 주 동안 합산되지 않는 것 같습니다. 일요일 결과는 올바른 주에 포함되지 않습니다. 나는 그것이 주중 마지막 날에 11 : 59 : 59.999를 포함하지 않는 날과 관련이 있다고 생각하고 있습니다.

Week Ending | Sales 
01/05/2014 | 5 
01/12/2014 | 8 
01/19/2014 | 11 
01/26/2014 | 14 

위 표 서식을 용서하십시오 :

SELECT DATEADD(wk, DATEDIFF(wk, 6, Sales.DateOfSale), 6) as [Week Ending], count(SalesID) as Sales, 
     count(distinct(representative)) as Agents, count(SalesID)/count(distinct(representative)) as SPA 
FROM Sales 
where DateOfSale >= DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 
GROUP BY DATEADD(wk, DATEDIFF(wk, 6, Sales.DateOfSale), 6) 
ORDER BY DATEADD(wk, DATEDIFF(wk, 6, Sales.DateOfSale), 6) 

이 같은 뭔가를 기대하고있다. 편집기를 사용하여 파이프/개행 기반 테이블을 만드는 방법을 알 수 없었습니다.

~ 닉

+0

. . StackOverflow에서는 각 행 앞에 4 개의 공백을 넣어 (특수 태그 없음) 코드와 표의 서식을 지정할 수 있습니다. region을 선택하고 편집 창 위의'{}'버튼을 클릭하여 region에 대해이 작업을 수행 할 수 있습니다. –

+0

Gordon님께 감사드립니다 ... – Nikoli

답변

0

내가 캘린더의 모든 정보가있는 테이블 또는 테이블 매개 변수를 만드는 것이 좋습니다. 이 경우 최소한 WeekEnding 열이 필요합니다. 유효한 WeekEnding 날짜와 예를 들어

DECLARE @MyCalendar TABLE 
    (
    WeekEnding date 
    ); 

채우기이. 또한 판매 데이터의 양을 제한하는 매개 변수를 만들 수도 있습니다. @BeginDate 및 @EndDate.

당신이 일을 끝난 주에 "<을 ="사용하여 조인 경우에, 나는 당신이 당신이 원하는 반환받을 것으로 예상 :

SELECT 
    MyCalendar.WeekEnding, 
    COUNT(Sales.SalesId) Sales, 
    COUNT(DISTINCT Sales.Representative) Agents, 
    CAST(COUNT(Sales.SalesId) AS float)/CAST(COUNT(DISTINCT Sales.Representative) AS float) Spa 
FROM 
    Sales 
    INNER JOIN 
    @MyCalendar MyCalendar 
    ON 
     Sales.DateOfSale <= MyCalendar.WeekEnding 
WHERE 
    Sales.DateOfSale BETWEEN @BeginDate AND @EndDate 
GROUP BY 
    MyCalendar.WeekEnding; 

난 당신이 SQL 2012을 사용하는 가정입니다,하지만 나는이 의지를 믿는다 2008 년에도 일합니다. 나는 다른 두 가지를 지적 할 수도있다. 먼저 SalesId의 COUNT를 대표의 고유 수로 나눌 때 데이터 유형을 고려하십시오. 당신은 기대 한 수익을 얻지 못할 수도 있습니다. 그래서 나는 내가 떠 다니는 것처럼 던졌습니다. 둘째, 내가 사용하는 것보다 약간 다른 수를 적용합니다. 여분의 괄호는 필요하지 않습니다.

간체 버전은 SQL Fiddle입니다.

관련 문제