如何在我输入的每一行中获取最早日期和最早日期之间的天数



我很难获得最早日期和最新日期之间的天数,我遇到的问题是如果我使用MINMAX我必须按列分组,这是一个问题,因为我没有要分组的列。

如果我的数据如下所示:

2017/01/01         EXAMPLE 
2017/01/01         EXAMPLE
2017/01/01         EXAMPLE
2017/01/05         EXAMPLE
2017/01/06         EXAMPLE
2017/01/06         EXAMPLE
2017/01/08         EXAMPLE

我需要在整个表中添加一个带有静态数字的列,因此它看起来像:

2017/01/01         EXAMPLE       8
2017/01/01         EXAMPLE       8
2017/01/01         EXAMPLE       8
2017/01/05         EXAMPLE       8
2017/01/06         EXAMPLE       8
2017/01/06         EXAMPLE       8
2017/01/08         EXAMPLE       8

这可能很简单,但我只是无法在不分组的情况下正确完成 - 8 是最早一天和最后一天之间的天数

这是针对甲骨文的

在分析版本中使用max()min()

select dt, str, max(dt) over () - min(dt) over () + 1 diff
from t

例:

with t (dt, str) as (
select date '2017-01-01', 'EXAMPLE' from dual union all
select date '2017-01-01', 'EXAMPLE' from dual union all
select date '2017-01-01', 'EXAMPLE' from dual union all
select date '2017-01-05', 'EXAMPLE' from dual union all
select date '2017-01-06', 'EXAMPLE' from dual union all
select date '2017-01-06', 'EXAMPLE' from dual union all
select date '2017-01-08', 'EXAMPLE' from dual)
select dt, str, max(dt) over () - min(dt) over () + 1 diff
from t

结果:

DT          STR           DIFF
----------- ------- ----------
2017-01-01  EXAMPLE          8
2017-01-01  EXAMPLE          8
2017-01-01  EXAMPLE          8
2017-01-05  EXAMPLE          8
2017-01-06  EXAMPLE          8
2017-01-06  EXAMPLE          8
2017-01-08  EXAMPLE          8
7 rows selected

编辑: 您的查询应为:

select RATE_CODE, BUSINESS_DATE, 
max(BUSINESS_DATE) over () - min(BUSINESS_DATE) over () + 1 diff 
from RATE_CODE_STAT_DAILY 

您不需要with子句,我添加它只是为了制作一些示例数据。只需使用上面的查询。而且我不知道真正的表名和列名。

在这种情况下,您应该使用minmax.First_valuelast_value是替代的,但请仔细阅读文档并了解差异。

下面给了我我需要的 - 谢谢你@ponder对分析的提示,做了一些研究,遇到了FIRST_VALUE和LAST_VALUE

select 
RATE_CODE,
BUSINESS_DATE,
FIRST_VALUE(BUSINESS_DATE) over() AS FIRSTDATE,
LAST_VALUE(BUSINESS_DATE) over(ORDER BY RATE_CODE RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS LASTDATE
from RATE_CODE_STAT_DAILY
where BUSINESS_DATE > '01-JUL-17'

相关内容

  • 没有找到相关文章

最新更新