我需要获取数量的最小和最大日期,但是我需要基于数量而不是全部相同数量的数量进行分组。
基本上,我有每日交易量和这些每日交易量的日期。我需要能够获得一组卷的MIN Date为“ to”和MAX date为“ from”。
请注意,该卷可以遍历日期,然后中断,然后为同一卷设置一组新的日期。
希望下面的屏幕截图能更好地解释我。我知道如何通过代码来执行此操作。但是我想知道SQL是否也可以做到这一点。
请注意,SQL将在应用程序内调用,我无法插入到临时表中以获取最终结果数据集...
这是我使用select *查询的原始数据:
这是我最终想要的:
我正在运行的查询为我提供了1100卷所有出现的最小值和最大值。我希望它根据日期之间的间隔进行拆分,如最终结果屏幕截图所示。
这是我的SQL:
SELECT daily_volume, MIN(volume_date) AS min_date, MAX(volume_date) AS max_date, ins_num
FROM daily_volume
WHERE ins_num = 3854439
GROUP BY daily_volume, ins_num
以下内容是为sql服务器编写的,但它应适用于其他数据库(sqlfiddle):
with DatesMinMax as
(
select
volume_date,
daily_volume,
isnull
(
(
select top 1 d2.volume_date
from daily_volume d2
where d.volume_date > d2.volume_date and d.daily_volume <> d2.daily_volume
order by d2.volume_date desc
)
, '1753-01-01'
) as min_date,
isnull
(
(
select top 1 d2.volume_date
from daily_volume d2
where d.volume_date < d2.volume_date and d.daily_volume <> d2.daily_volume
order by d2.volume_date
)
, '9999-12-31'
) as max_date
from daily_volume d
),
DatesFromTo as
(
select d1.daily_volume as qty,
(select min(d2.volume_date)
from DatesMinMax d2
where d2.volume_date > d1.min_date and d2.volume_date < d1.max_date
) as [from],
(select max(d2.volume_date)
from DatesMinMax d2
where d2.volume_date > d1.min_date and d2.volume_date < d1.max_date
) as [to]
from DatesMinMax d1
)
select distinct
qty,
[from],
[to]
from DatesFromTo
order by [from]
DatesMinMax
用于获取第一个日期与当前音量不同的日期
DatesFromTo
用于获取每一行的日期范围
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句