Sql 尽可能地(尽管WITH子句也是Oracle)——更容易转移到另一个数据库引擎。@Stephen Chung我认为这是一种相当落后的方法。如果您要为数据库支付$$$,并且它的某些功能可以产生最高效的解决方案,请使用它!此外,WITH和windows函数都是标
Sql 尽可能地(尽管WITH子句也是Oracle)——更容易转移到另一个数据库引擎。@Stephen Chung我认为这是一种相当落后的方法。如果您要为数据库支付$$$,并且它的某些功能可以产生最高效的解决方案,请使用它!此外,WITH和windows函数都是标,sql,oracle,Sql,Oracle,尽可能地(尽管WITH子句也是Oracle)——更容易转移到另一个数据库引擎。@Stephen Chung我认为这是一种相当落后的方法。如果您要为数据库支付$$$,并且它的某些功能可以产生最高效的解决方案,请使用它!此外,WITH和windows函数都是标准SQL(只是不是古代版本),许多其他数据库支持它们(MS-SQL、PostgreSQL)。 WITH datevalues AS ( SELECT max(filledqty) maxfilledqty, substr(execid, 3
尽可能地(尽管WITH子句也是Oracle)——更容易转移到另一个数据库引擎。@Stephen Chung我认为这是一种相当落后的方法。如果您要为数据库支付$$$,并且它的某些功能可以产生最高效的解决方案,请使用它!此外,WITH和windows函数都是标准SQL(只是不是古代版本),许多其他数据库支持它们(MS-SQL、PostgreSQL)。
WITH datevalues AS
(
SELECT max(filledqty) maxfilledqty, substr(execid, 3, 10) execiddate
FROM clientordermas
GROUP BY substr(execid, 3, 10)
)
SELECT
execiddate,
maxfilledqty -
last_value(maxfilledqty) over(ORDER BY execiddate DESC ROWS BETWEEN 0 PRECEDING AND 1 FOLLOWING)
FROM datevalues
ORDER BY execiddate DESC;
WITH maxqtys AS (
SELECT substr(a.execid,3,10) AS date, MAX(a.filledqty) AS maxqty
FROM clientordermas a
GROUP BY substr(a.execid,3,10)
)
SELECT a.maxqty-b.maxqty
FROM maxqtys a, maxqtys b
WHERE a.date <> b.date AND ROWNUM=1
ORDER BY a.date DESC, b.date DESC