2012-03-14 84 views
0

我正在處理一個彙總查詢,它將對交易總計進行求和,提取最近的交易日期並提取最近的交易數量。我到目前爲止如下:如何通過另一個MAX(日期時間)列選擇列?

SELECT 
    A.bill_cust_code, 
    A.product_code, 
    A.pack_code, 
    C.name, 
    MAX(A.invoice_date) AS last_purchase_date, 
    SUM(IF(A.invoice_date>DATE_FORMAT(NOW(), '%Y'),A.total_sales,0)) AS ytd_sales, 
    SUM(IF(A.invoice_date<DATE_FORMAT(NOW(), '%Y') AND A.invoice_date>DATE_FORMAT(NOW() - INTERVAL 1 YEAR, '%Y'),A.total_sales,0)) AS last_year_sales, 
    A.source 
FROM 
    sales AS A 
INNER JOIN 
    prodware AS B ON (B.product_code = A.product_code AND B.pack_code = A.pack_code AND B.warehouse_code = A.warehouse_code) 
INNER JOIN 
    product AS C ON A.product_code=C.product_code 
WHERE 
    B.type='Y' 
GROUP BY 
    A.bill_cust_code,A.product_code,A.source 

sales表中有數量列。我怎樣才能拉salesquantity其中對應MAX(A.invoice_date)

樣本輸出

+----------------+--------------+-----------+-------------------------------+--------------------+------------+-----------------+-----------+ 
| bill_cust_code | product_code | pack_code | name       | last_purchase_date | ytd_sales | last_year_sales | source | 
+----------------+--------------+-----------+-------------------------------+--------------------+------------+-----------------+-----------+ 
|    6 | DF2CARD  | 110  | ULTRA LOW SULFUR DIESEL 2 C/L | 2012-01-31   | 1022213.71 |  13663316.61 | Cardlock | 
|    6 | DF2CARD  | 104  | ULTRA LOW SULFUR DIESEL 2 C/L | 2010-12-06   |  0.00 |   0.00 | Wholesale | 
|    6 | DFGRCARD  | 101  | GREEN DIESEL FUEL CARDLOCK | 2006-08-31   |  0.00 |   0.00 | Cardlock | 
|    6 | DFGRPP  | LOC  | GREEN DIESEL FUEL PAC PRIDE | 2008-04-15   |  0.00 |   0.00 | Cardlock | 
|    6 | DFRDCARD  | 108  | ULTRA LOW DYED DIESEL 2 C/L | 2012-01-31   | 12678.35 |  136566.81 | Cardlock | 
+----------------+--------------+-----------+-------------------------------+--------------------+------------+-----------------+-----------+ 

我想另一列last_purchase_quantity這是由MAX(A.invoice_date)返回的記錄數量。

回答

1

您可以將上述內容作爲子查詢,然後選擇外部附加信息。 我沒有測試我輸入的內容,因爲我沒有這個結構,所以請在輸入時修改任何錯誤。

SELECT sub_tab.bill_cust_code, 
     sub_tab.product_code, 
     sub_tab.pack_code, 
     sub_tab.name, 
     sub_tab.last_purchase_date, 
     (select sales.quantity 
     from sales 
     where sales.invoice_date=sub_tab.last_purchase_date) as quantity, 
     sub_tab.ytd_sales, 
     sub_tab.last_year_sales, 
     sub_tab.source 
RFOM (

SELECT 
    A.bill_cust_code, 
    A.product_code, 
    A.pack_code, 
    C.name, 
    MAX(A.invoice_date) AS last_purchase_date, 
    SUM(IF(A.invoice_date>DATE_FORMAT(NOW(), '%Y'),A.total_sales,0)) AS ytd_sales, 
    SUM(IF(A.invoice_date<DATE_FORMAT(NOW(), '%Y') AND A.invoice_date>DATE_FORMAT(NOW() - INTERVAL 1 YEAR, '%Y'),A.total_sales,0)) AS last_year_sales, 
    A.source 
FROM 
    sales AS A 
INNER JOIN 
    prodware AS B ON (B.product_code = A.product_code AND B.pack_code = A.pack_code AND B.warehouse_code = A.warehouse_code) 
INNER JOIN 
    product AS C ON A.product_code=C.product_code 
WHERE 
    B.type='Y' 
GROUP BY 
    A.bill_cust_code,A.product_code,A.source 
) sub_tab 
相關問題