私は現在、顧客の売上データを取得し、それを月と年で合計するSQLクエリを持っています。私がしたいのは、このデータを四半期ごとに集計することです。現在のクエリは次のとおりです。1年以内の値の合計
SELECT A.*, DATE_FORMAT(C.TxnDate, '%Y-%m') AS FormattedTxnDate, SUM(C.Quantity * D.TotalCost) AS COGS, SUM(C.Quantity * C.Amount) AS Revenue
FROM customer_info A, invoices B, invoice_lines C, inventory D
WHERE A.CustomerID = B.CustomerID
AND B.TxnID = C.TxnID
AND C.ItemID = D.ID
AND B.TxnDate BETWEEN '2013-04-01' AND '2016-04-06'
GROUP BY A.CustomerID, YEAR(B.TxnDate), MONTH(B.TxnDate) ASC
私はに、クエリの最後の行を変更しようとしました:意図したように、これは動作しませんでした
GROUP BY A.CustomerID, YEAR(B.TxnDate), QUARTER(B.TxnDate) ASC
。同じ四半期の値が合計されても、得られたFormattedTxnDateは、四半期の最初の月を売上情報とともに使用します(Q2の4月のような実際の最初の月には、 5月)。 DATE_FORMATを使用して月よりも四半期を表示する方法はありますか?私は%q
オプションがあるかもしれないと思ったが、私は間違っていた。書式設定された日付で作業するのは可能ですが、単に四半期にした場合よりももっと面倒で迷惑になることに注意してください。
私は2番目のオプションを試しました。それはうまくいかなかった。最初は、私は単に 'invoices B'の代わりにあなたの最後のコードの例をクエリに挿入しようとしましたが、前と同じ結果が得られました。私は 'B.TxnDate'を' B.Quarter'に変更して、値そのものが乱れてしまうように少し修正しました。私はそれが、今年の変化の中で、毎年一定の期間内にすべてを集計していると思う。 – user3521737
GROUP BY A.CustomerID、YEAR(B.TxnDate)、quarter ASC – dmg
これで今すぐ試みましたが、FormattedTxnDateはまだ私に四分の一を与えていません。四半期の最初の利用可能な年と月を示しています。 – user3521737