日期滞后函数
LAG Function over dates
select to_date(to_char(order_date, 'yyyymmdd'), 'yyyymmdd') -
lag(to_date(to_char(order_date, 'yyyymmdd'), 'yyyymmdd'), 1, 0)
over (order by order_id)
from orders
我想找出两个日期之间的天数差异,但是当我对日期应用滞后函数时,它 returns NUMBER 值 -
ORA-00932: inconsistent datatypes: expected DATE got NUMBER
尝试使用 TO_CHAR、CAST 进行一些转换,但收效甚微。
感谢您的帮助!
order_date
是 date
吗?如果是这样,对它执行 to_char
只是为了再次对其执行 to_date
是没有意义的(如果您只是想将 date
的时间部分设置为午夜,请使用 trunc(order_date)
).假设它是 date
order_date - lag(order_date) over (order by order_id)
应该是有效的语法。
但您似乎不太可能想知道连续订单之间的天数(这几乎肯定是一天的一小部分),而不是,比如说,同一客户的连续订单之间的天数这可能涉及在您的分析函数中使用 partition by
子句。
select to_date(to_char(order_date, 'yyyymmdd'), 'yyyymmdd') -
lag(to_date(to_char(order_date, 'yyyymmdd'), 'yyyymmdd'), 1, 0)
over (order by order_id)
from orders
我想找出两个日期之间的天数差异,但是当我对日期应用滞后函数时,它 returns NUMBER 值 -
ORA-00932: inconsistent datatypes: expected DATE got NUMBER
尝试使用 TO_CHAR、CAST 进行一些转换,但收效甚微。 感谢您的帮助!
order_date
是 date
吗?如果是这样,对它执行 to_char
只是为了再次对其执行 to_date
是没有意义的(如果您只是想将 date
的时间部分设置为午夜,请使用 trunc(order_date)
).假设它是 date
order_date - lag(order_date) over (order by order_id)
应该是有效的语法。
但您似乎不太可能想知道连续订单之间的天数(这几乎肯定是一天的一小部分),而不是,比如说,同一客户的连续订单之间的天数这可能涉及在您的分析函数中使用 partition by
子句。