2017-07-31 26 views
1

現在の年と前年のMonth-To-Dateデータを返すクエリを作成しようとしています。
意味2017-07-01から2017-07-26までのデータと、2016-07-01から2016-07-26のデータが必要です。SQL月間YTDと以前のYTDデータ

しかし、私のクエリは現在2017-07-01から2017-07-26(正しく)のデータを返しますが、2016-07-01から2016-07-31(間違って)のデータも返します。

2年間の同じ期間(MTD)のデータを取得するにはどうすればよいですか?あなたが参照したい場合は

SELECT year 
     , month 
     , sum(sales) 

from  salesdata.sales 

--Selecting were day in range with same month 
WHERE DAY(date) BETWEEN 1 AND DAY(data_up_to) 
AND  MONTH = MONTH(NOW()) 
AND  YEAR IN (YEAR(NOW()), YEAR(NOW())-1) 

--Group by Year, Month 
GROUP BY YEAR 
     , MONTH 

表はdateday in quarteryearquartermonthweekが、日なし列...

SELECT 
    data_up_to, 
    date, 
    year, 
    month, 
    sum(sales) 
FROM 
    salesdata.sales 
WHERE 
    MONTH = MONTH(NOW()) and 
    YEAR in (YEAR(NOW()), YEAR(NOW())-1, YEAR(NOW())-2) and 
    date <= data_up_to 

答えて

0

が含まれて私はこのように行くだろうMTDにはNOW()を使用できます。

SELECT year 
     , month 
     , sum(sales) 

from  salesdata.sales 

--Selecting were day in range with same month 
WHERE DAY(date) BETWEEN 1 AND DAY(NOW()) 
AND  MONTH = MONTH(NOW()) 
AND  YEAR IN (YEAR(NOW()), YEAR(NOW())-1) 

--Group by Year, Month 
GROUP BY YEAR 
     , MONTH 

月と年のグループ化を有効にするために、クエリから日付を削除しました。

+0

ありがとうございます!私はDAY(NOW() - 1)を使用しなければなりませんでした。なぜなら、それはより多くのデータを返していたからです。つまり今日(8/1)私はデータを8/2まで0の値で取得していました。 SELECT年 、月 、合計(売上高)同月 1日BETWEEN DAY(日)(NOW() - 1)との範囲内salesdata.salesから --Selectingた日 とMONTH = MONTH(NOW()) AND YEAR IN(YEAR(NOW())、YEAR(NOW()) - 1)年度別 --group、月 GROUP BY YEAR 、MONTH – George

+0

どういたしまして! – flxplzk

+0

追加するもの:stackoverflowで正しい答えの検索を簡略化するために:答えが正しい場合は、正しいとマークします。それは、同様の問題を持つ他の人が答えを早く見つけるのに役立ちます。関連する – flxplzk

関連する問題