我在下表中遇到了困难。表A,在执行我的脚本时只是我当前表的一部分,还有其他列和行,但我只是拿出它的一部分,我认为能够理解我的问题是有用的。场景:客户购买带有序列IA003的10个itemA,但是当我执行我的查询时,它会显示TABLE A结果。我想要的是当客户订购10件特定商品时,它应该与该商品的系列内联显示,而不是所有具有该商品名的连续商品。或者,如果客户订购了ItemA,那么它将查找最接近的截止日期,无论它具有什么序列号。 非常感谢
### Table A ###
ITEMNAME || SERIALS || EXPIRATION DATE || SO_QTY
ITEM A IA0001 2014-01-20 10
ITEM A IA0002 2014-01-01 10
ITEM A IA0003 2013-05-13 10
ITEM B IB001 2012-11-08 15
ITEM B IB002 2015-12-28 15
ITEM B IB003 2014-06-01 15
### how will i get this output? ###
###表A ###
ITEMNAME SERIALS EXPIRATION DATE SO_QTY
ITEM A IA0001 2014-01-20
ITEM A IA0002 2014-01-01
ITEM A IA0003 2013-05-13 10
ITEM B IB001 2012-11-08 15
ITEM B IB002 2015-12-28
ITEM B IB003 2014-06-01
答案 0 :(得分:0)
您可以使用EXPIRATIONDATE
使用子查询加入表格,该子查询为Itemname
获取最早的LEFT JOIN
,以便您可以测试记录是否为每个ItemName
最早的。
SELECT a.ItemName,
a.Serials,
a.EXPIRATIONDATE,
IF(b.Itemname IS NULL, NULL, a.SO_QTY) SO_QTY
FROM TableA a
LEFT JOIN
(
SELECT Itemname, MIN(EXPIRATIONDATE) min_date
FROM TableA
GROUP BY ItemName
) b ON a.Itemname = b.Itemname AND
a.EXPIRATIONDATE = b.min_date