我正在运行此查询。从加入表中选择MAX(日期)
SELECT
t1.quantity,
t2.transaction_date,
t1.product_id
FROM
ezsystem_usah.invoice_line AS t1
INNER JOIN ezsystem_usah.invoices AS t2
ON t1.invoice_id = t2.id_invoices
WHERE
t2.customer_id = '8000004C-1325619329'
AND (product_id = '8000016F-1325198704'
OR product_id = '80000027-1324422404' OR ...);
所得表是:
quantity | transaction_date | product_id
7 2012-01-04 8000016F-1325198704
8 2012-03-05 8000016F-1325198704
1 2012-01-05 11111111-1324422404
... ... ...
我想选择用于特定PRODUCT_ID基于MAX(TRANSACTION_DATE)行,以产生这样的事情:
quantity | transaction_date | product_id
8 2012-03-05 8000016F-1325198704
1 2012-01-05 11111111-1324422404
换句话说,从连接表中,我想选择每个产品ID的最新条目。
我曾尝试:
SELECT
t1.quantity,
MAX(t2.transaction_date),
t1.product_id
FROM
ezsystem_usah.invoice_line AS t1
INNER JOIN ezsystem_usah.invoices AS t2 ON t1.invoice_id = t2.id_invoices
WHERE
t2.customer_id = '8000004C-1325619329'
AND (product_id = '8000016F-1325198704' OR product_id = '80000027-1324422404' OR ...)
GROUP BY
t1.product_id;
但是数量是不正确。
另一种方法,我没有尝试过,但我认为可能的工作是使用HAVING MAX(transaction_date) = ([sub query])
,但它似乎代价高昂。
最糟糕的情况是,我可以针对每个产品逐个运行查询,但是如果可能的话,我想避免这种查询。
感谢, 丹麦
哪个表是transaction_date和product_id中的? – 2012-07-19 21:52:37
谢谢你的抬头,我添加了信息 – Danedo 2012-07-20 14:28:09