Şu anda müşterilerin satış verilerini toplayan ve ay ve yıl olarak özetleyen bir SQL sorgum var. Yapmak istediğim bu verileri çeyrek olarak toplamak. Mevcut sorgu şu şekildedir. amaçlandığı gibiYıllık toplamlar içinde toplam değer
GROUP BY A.CustomerID, YEAR(B.TxnDate), QUARTER(B.TxnDate) ASC
Bu işe yaramadı:
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
Ben sorguda son satırı değiştirmeye çalışmıştır. Aynı çeyrek içerisindeki değerler toplanmasına rağmen, sonuçta FormattedTxnDate, satış bilgilerinin bulunduğu belirli bir çeyreğin ilk ayını kullanmaktadır (çünkü söz konusu müşteri, ilk ay boyunca, FT2 ayının anlamı olan, Q2'nin Nisan ayı gibi bir şey satın almamış olabilir. Mayıs olur. DATE_FORMAT'ı ay yerine çeyrek göstermek için kullanmanın bir yolu var mı? Bir
%q
seçeneği olabileceğini düşündüm ama yanılmışım. Biçimlendirilmiş tarihlerle çalışmanın OLABİLECEĞİNİ unutmamalıyım, ancak daha basit ve daha rahatsız edici olabilirdim.
İkinci seçeneği denedim. Işe yaramadı. Öncelikle, son kod örneğinizi 'faturalar B' yerine sorguya yerleştirmeyi denedim ancak daha önce yaptığım sonuçları aldım. Daha sonra, 'B.TxnDate' değerini "B.Quarter" olarak değiştirerek, değerlerin kendiliğinden çözülmesini sağlayan bir değişiklik yaptım. Bence şimdi bu değişim ile belirli bir yıllık süre içinde her şeyi toplamalıyor. – user3521737
grubu ile değiştirdiniz: GROUP BY A.CustomerID, YEAR (B.TxnDate), çeyrek ASC – dmg
Şimdi bunu denedim ancak FormattedTxnDate hala bana çeyrek vermiyor. Sadece çeyreğin ilk kullanılabilir yılını ve ayını gösterir. – user3521737