2015-09-14 28 views
1

我試圖爲我們的銷售團隊建立一個有用的查詢,以查看我們的業務在當月的銷售額與前幾個月的相同點。是否可以在MySQL中循環銷售數據?

所以如果今天是9月14日,我想比較一下8月1日到14日之間我們做了多少銷售,以此來看我們是否漲跌。

我已經創建了查詢來提取數據,但它沒有任何類型的循環。任何人都可以提出一個方法來做到這一點嗎?下圖爲我2015年7月的數據......

SELECT CONCAT(MONTH(OrderDate),'-',YEAR(OrderDate)) AS MontyYear, 
COUNT(sw_orders.OrderNumber) OrderCount, 
    SUM(Gross) GrossIncome 
FROM 
    orders 
WHERE 
orders.MasterOrderNumber = '' 

AND Date(OrderDate) >= '2015-07-01' 
AND Date(OrderDate) <= Concat('2015-07-', DAY(CURDATE())) 

order by orders.ordernumber; 

感覺就像我需要一個變量是月數,所以開始於「1」爲1 - 然後計數每個環路和使用在使用查詢的OrderDate部分?

+0

你並不需要一個循環。您只需要在orderDate上添加一個過濾器,只返回一定數量,這樣您就不會查詢整個darn數據庫。此外,如果您在顯示字段中切換年份和月份,則可以按順序按條款使用它。 –

回答

0

我不會在查詢中使用字符串常量,但使用MySQL的DAYMONTH功能:

WHERE orders.MasterOrderNumber = '' 
AND DAY(OrderDate) <= DAY(CURDATE()) 
GROUP BY MONTH(OrderDate) 
+0

這是完美的,但需要添加到組中,以使其更有效:GROUP BY MONTH(OrderDate),YEAR(OrderDate) –

+0

當然,無論是添加或WHERE YEAR(OrderDate)= ...'我應該補充說。 – Digifaktur

相關問題