Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL Where不存在-多个Where_Mysql_Sql - Fatal编程技术网

Mysql SQL Where不存在-多个Where

Mysql SQL Where不存在-多个Where,mysql,sql,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'脚本的结

我对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'脚本的结果为2015年12月14日

    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

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

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

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
如果希望结果包括所有项的最新
处置
记录,只需从内部查询的
WHERE
子句中删除
ItemNo='XYZ'


有一个正在工作的SQLFIDLE-感谢@JamieD77对其进行设置:)

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

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
如果希望结果包括所有项的最新
处置
记录,只需从内部查询的
WHERE
子句中删除
ItemNo='XYZ'


有一个有效的SQLFIDLE-谢谢@JamieD77设置它:)

如果我们坚持你的说法

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

这意味着单个项目编号。所以你不能这样做吗

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


如果我们坚持你的说法

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

这意味着单个项目编号。所以你不能这样做吗

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


脚本在此处返回结果。。为一个新职位精心起草的问题。坚持下去!=)脚本在此处返回结果。。为一个新职位精心起草的问题。坚持下去!=)非常感谢你的帮助。需要注意的是:当使用ItemNo时,结果是空白的。我更改了它并使用了Itemno_ID,它成功了。非常感谢您的帮助。需要注意的是:当使用ItemNo时,结果是空白的。我改变了它,使用了Itemno_ID,它成功了。我想这也会成功,但我尝试了,它给了我一个错误。在某个时候,我想从另一个表中添加其他标准。i、 e.查看ItemNo表,只返回C_代码为null或其他值的项目的最后处置日期。我明白了。错误可能是由于列名等原因造成的。如果您需要连接到另一个表,则是一个连接,并检查nulls
不存在
。我认为这也可以,但我尝试了,它给了我一个错误。在某个时候,我想从另一个表中添加其他标准。i、 e.查看ItemNo表,只返回C_代码为null或其他值的项目的最后处置日期。我明白了。错误可能是由于列名等原因造成的。如果您需要连接到另一个表,则选择“是”连接并检查nulls
不存在