2016-02-25 54 views
0

以下查詢返回年份和季度的訂單總計。我還希望將所述值作爲總支出的百分比表示。按年份和季度排序後添加百分比

SELECT DATABASE() AS PURCHASING_Total_PO_Value_By_Year, 
YEAR(order_headers.created_at) AS Year, 
QUARTER(order_headers.created_at) AS Quarter, 
COUNT(DISTINCT(order_headers.id)) AS Orders, 
SUM(order_lines.accounting_total) AS Order_Total 
FROM (order_lines LEFT JOIN order_headers ON order_lines.order_header_id = order_headers.id) 
WHERE (order_headers.status LIKE 'Issued') OR (order_headers.status LIKE 'Closed') 
Group by YEAR(order_headers.created_at), QUARTER(order_headers.created_at) 

我需要採取SUM(order_lines.accounting_total) as 'TOTAL SPEND'而不應用年和四分之一過濾器。

任何指針/提示,將不勝感激。

Current Query Returns

+0

你能顯示一些輸入和預期的輸出嗎? –

+0

@TimBiegeleisen剛剛添加了截圖。 –

+0

我希望看到_input_數據以及所需的輸出。 –

回答

2

如果你真的只是想總計的Order_Total沒有一年或季度彙總的,那麼你可以嘗試使用子查詢:

SELECT DATABASE() AS PURCHASING_Total_PO_Value_By_Year, 
    YEAR(order_headers.created_at) AS Year, 
    QUARTER(order_headers.created_at) AS Quarter, 
    COUNT(DISTINCT(order_headers.id)) AS Orders, 
    SUM(order_lines.accounting_total) AS Order_Total, 
    100 * SUM(order_lines.accounting_total)/
     (SELECT SUM(accounting_total) FROM order_lists) AS Order_Percentage 
FROM order_lines LEFT JOIN order_headers 
    ON order_lines.order_header_id = order_headers.id 
WHERE (order_headers.status LIKE 'Issued') OR (order_headers.status LIKE 'Closed') 
GROUP BY YEAR(order_headers.created_at), QUARTER(order_headers.created_at) 

我加入柱您SELECT是這個:

100 * SUM(order_lines.accounting_total)/
    (SELECT SUM(accounting_total) FROM order_lists) AS Order_Percentage 
+0

我需要保持該季度/年度的總費用,但之後需要另一列顯示與沒有過濾器的SUM(order_lines.accounting.total)相比的百分比。我幾乎那裏 - ...'四分之一(order_headers.created_at)AS季度, COUNT(DISTINCT(order_headers.id))訂單, \t SUM(order_lines.accounting_total)AS的支出「, \t((」 (選擇SUM(accounting_total)FROM order_lines)AS Total_Spend FROM order_lines LEFT JOIN order_headers' 上述修改在百分比的每個範圍內返回NULL。 –

+0

我不認爲你可以用這種方式使用別名。請使用我的確切查詢。 –

+0

我使用了您的確切查詢,並且它返回了最右列中的TOTAL Order值。我需要這個百分比值。 –