SQL返回带有间隙的From / To日期

时间:2016-03-14 22:38:46

标签: sql sql-server tsql sql-server-2012

我有一个临时表,其数据如下: enter image description here

我需要提出t-SQL来显示这个地段的日期,如下所示: enter image description here

由于该批次于2015年6月12日变空,我需要显示2个单独的行,以便在批次没有数量时允许日期范围内的差距。我尝试过使用MIN和MAX,但我似乎无法弄清楚如何允许时间间隔。任何帮助将不胜感激。我正在使用SQL Server 2012。

感谢。

1 个答案:

答案 0 :(得分:1)

当平衡从零切换时,您想要分组。因此,您可以通过执行0运行余额的累计计数来定义组。如果以相反的顺序执行此操作,则该值实际上更准确。

这提供了一个分组,您可以将其用于聚合:

select lot, min(trandate), max(trandate)
from (select t.*,
             sum(case when runbal = 0 then 1 else 0 end) over
                 (partition by lot order by trandate desc) as grp
      from t
     ) t
group by grp
order by min(trandate);