1

我在下表中遇到了困难。表 A 只是执行脚本时我当前表的一部分,还有其他列和行,但我只是取出其中的一部分,我认为这对理解我的问题很有用。场景:客户购买了 10 件带有序列号 IA003 的 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                        
4

1 回答 1

0

您可以使用子查询连接表,该子查询为 each获取最旧EXPIRATIONDATEItemnameLEFT JOIN因此您可以测试记录是否是最旧的 each 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
于 2013-04-17T02:30:33.817 回答