2016-11-24 2 views
0

특정 날짜부터 판매 날짜를 그룹화해야합니다. 날짜는 판매 데이터를 내보낼 날짜로 결정됩니다. 아래의 예에서 데이터는 2016/11/10에 수출됩니다.SQL : 매월 특정 날짜의 날짜를 그룹화하는 방법

그런 다음 판매 기간을 노란색 기간으로 그룹화하여 각 기간 동안 판매를 계산해야합니다.

나는 dateadd 함수를 시도했지만 매월마다 다른 요일이있을 수 있으므로 작동하지 않습니다.

모든 의견을 크게 기뻐할 것입니다. 감사.

enter image description here

+0

데이터는 항상 10 일에 내 보냈습니까? 그렇지 않은 경우, 내 보낸 날짜를 테이블에 기록합니까? –

+0

@ destination-data, 아니 항상 10 일째되는 것은 아닙니다. 나는 한 달에 여러 번 할 수도 있습니다. –

+0

날짜가 어땠는지 어떻게 알 수 있습니까? 테이블에 기록되어 있습니까? 아니면 항상 오늘입니까 (예 : 24 일에 수출하고 24 번째를 사용한다면)? –

답변

1

이 문제의 핵심은 당신이 그룹 할 수있는 무언가를 찾는 것입니다. 이것이 데이터에 존재하지 않으므로 데이터를 작성해야합니다. 내 기본적인 생각은 날짜를 상쇄하는 것입니다. 현재 날짜 이후의 일은 다음 달로 푸시됩니다. 이것은 우리에게 그룹으로 묶을 수있는보고 월을줍니다.

내 쿼리는 다음 샘플 데이터 사용

-- Generates a sample table. 
-- Contains one record per day, between Dec 1st 2015 and Feb 29th 2016. 
DECLARE @BaseDate DATE = '2015-12-01'; 
DECLARE @Sample TABLE 
    (
     DateKey DATE 
    ) 
; 

WHILE @BaseDate < '2016-02-29' 
BEGIN 

    INSERT INTO @Sample 
     (
      DateKey 
     ) 
    VALUES 
     (@BaseDate) 
    ; 

    SET @BaseDate = DATEADD(DAY, 1, @BaseDate); 
END 

를 그리고 여기있다 :

DateKey  ReportingMonth 
2016-02-28 2016-03-01 
2016-02-28 2016-03-01 
2016-02-27 2016-03-01 
2016-02-26 2016-03-01 
2016-02-25 2016-03-01 
2016-02-24 2016-02-01 -- Reporting period changes here. 
2016-02-23 2016-02-01 
2016-02-22 2016-02-01 
... 
2015-12-03 2015-12-01 
2015-12-02 2015-12-01 
2015-12-01 2015-12-01 
:

-- Offsets the date into reporting month groups. 
SELECT 
    DateKey, 
    CASE   
     WHEN DAY(DateKey) > DAY(GETDATE())THEN 
      CASE MONTH(DateKey) WHEN 12 THEN DATEFROMPARTS(YEAR(DateKey) + 1, 1, 1) 
      ELSE DATEFROMPARTS(YEAR(DateKey), MONTH(DateKey) + 1, 1) 
     END    
     ELSE DATEFROMPARTS(YEAR(DateKey), MONTH(DateKey), 1) 
    END AS ReportingMonth 
FROM  
    @Sample 
WHERE 
    DateKey BETWEEN '2015-12-01' AND '2016-04-30' 
ORDER BY 
    DateKey DESC 
; 

당신이 결과처럼 보이는 달의 24 일에이 작업을 실행하는 경우

솔직하게이 쿼리에 만족스럽지 않습니다. 나는 그것이 향상되고 단순해질 수 있다고 확신한다. 그러나 잘하면, 그것은 당신에게 좋은 출발점을 제공합니다.

+0

, 많은 고마워, 내 문제를 해결. –

관련 문제