2012-03-14 8 views
0

私は、トランザクション合計を集計し、最も最近の取引日を引いて、最新の取引数量を引き出す要約クエリを作成しています。私がこれまで持っていることは、次のとおりです。別のMAX(datetime)列を使用して列を選択するにはどうすればよいですか?

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表はquantityカラムがあります。どうすればsalesを引き出すことができますか? quantityこれは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 | 
+----------------+--------------+-----------+-------------------------------+--------------------+------------+-----------------+-----------+ 

私はMAX(A.invoice_date)によって返されたレコード内の量である別の列last_purchase_quantityをしたいと思います。

答えて

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 
関連する問題