请耐心等待我,因为我对这一切都是新手。我得到了一个以前的查询的答案,这是非常有帮助的。 现在我正在尝试完成项目的另一个步骤。
我的查询是,我有一张桌子,我正在尝试检索针对订单的特定行输入的最新笔记。 表格的示例如下所示。
下表中的数据是通过连接两个单独的表格获得的。
我使用了以下语法,并且能够获取针对示例订单输入的最新注释(867318) 但是现在,在订单有多行(ORDER_LINE)的情况下,如何检索针对ORDER_LINE输入的最新NOTE_PAD.TEXT?
非常感谢任何帮助。
SQL品牌: Oracle数据库12c之前日期格式:是实时日期/时间问题:最准确/有效的方法来检索最近输入的NOTE_PAD.TEXT,而不是每次更改ROWNUM,具体取决于ORDER_NUMBER
SQL语法:
SELECT *
FROM ( SELECT ORDER_TYPE,
ORDER_NUMBER,
ORDER_LINE,
NOTE_PAD.CREATED_DATE,
NOTE_PAD.TEXT
FROM ORDER_AWB INNER JOIN NOTE_PAD ON ( "ORDER_AWB"."NOTES" = "NOTE_PAD"."NOTES" )
WHERE ( "ORDER_AWB"."ORDER_NUMBER" = '867318' )
ORDER BY NOTE_PAD.CREATED_DATE DESC )
WHERE ROWNUM <= 1
2:http://i.stack.imgur.com/e02YS.png所以基本上这就是整个代码在数据库中的样子:
我需要根据特定类型的订单检索笔记它的地位。
因此
ORDER_TYPE ='RO'
ORDER_STATUS ='OPEN'
答案 0 :(得分:0)
如果您想同时处理多个订单,请使用row_number()
:
SELECT *
FROM (SELECT ORDER_TYPE, np, ORDER_LINE,
np.CREATED_DATE, NOTE_PAD.TEXT,
ROW_NUMBER() OVER (PARTITION BY o.ORDER_NUMBER
ORDER BY NP.CREATED_DATE DESC
) as seqnum
FROM ORDER_AWB o INNER JOIN
NOTE_PAD np
ON o."NOTES" = np."NOTES"
) o
WHERE SEQNUM = 1;