SQL不存在 - 多个WHERE

时间:2015-12-14 20:55:08

标签: mysql sql

我对SQL很新。我正在尝试编写一个脚本来获取特定项目编号的特定事务类型(处置)的最后一次出现(日期)。

表格如下所示

ID    ITEMNO    TRANS_DATE  TRANS_TYPE
1     XYZ           12/4/2015   DISPOSITION
2     ABC           12/6/2015   NEW ITEM
3     XYZ           12/14/2015  DISPOSITION

我希望ITEMNO'XYZ'脚本的结果是Disposition 12/14/2015。

    select ITEMNO, TRANS_DATE, TRANS_TYPE from TRANSLOG t
    where not exists(select tt.Id 
        from TRANSLOG tt
        where tt.TRANS_TYPE=t.TRANS_TYPE and
            tt.Id>t.Id
    )
    AND
    ITEMNO ='XYZ'
    AND
    TRANS_TYPE = 'DISPOSITION'

order by t.TRANS_TYPE

上面的脚本没有返回任何结果。

2 个答案:

答案 0 :(得分:0)

一种方法是获取popToRootViewControllerAnimated的列表,然后将其加入到完整的表中。只有具有最近交易日期的(ItemNo, 'DISPOSITION', MAX(Trans_Date))项才会显示结果:

DISPOSITION

如果您希望结果包含所有项目的最新SELECT TransLog.ItemNo, TransLog.Trans_Date, TransLog.Trans_Type FROM TransLog JOIN ( SELECT ItemNo, Trans_Type, MAX(Trans_Date) AS MostRecent FROM TransLog WHERE ItemNo = 'XYZ' AND Trans_Type = 'DISPOSITION' GROUP BY ItemNo, Trans_Type ) MaxDates ON TransLog.ItemNo = MaxDates.ItemNo AND TransLog.Trans_Type = MaxDates.Trans_Type AND TransLog.Trans_Date = MaxDates.MostRecent WHERE TransLog.Trans_Type = 'DISPOSITION' ORDER BY TransLog.Trans_Type 条记录,请从内部查询的DISPOSITION子句中删除ItemNo = 'XYZ'

有一个有效的SQLFiddle here - 感谢@ JamieD77进行设置:)

答案 1 :(得分:0)

如果我们坚持你的陈述,

  

我正在尝试编写一个脚本来获取a的最后一次出现(日期)   特定项目编号的特定交易类型(处置)。

这意味着单项号。你不能这样做吗?

SELECT ITEMNO, MAX(TRANS_DATE), TRANS_TYPE
FROM TRANSLOG
WHERE ITEMNO = 'XYZ' AND TRANS_TYPE = 'DISPOSITION';

SQL Fiddle thanks to @JamieD77 again =)

ITEMNO  MAX(TRANS_DATE)     TRANS_TYPE
XYZ     December, 14 2015 00:00:00  DISPOSITION