2012-03-14 85 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 
相关问题