2016-03-14 72 views
0

我有了这样的数据一个临时表: enter image description hereSQL从/返回日期有间隙

我需要拿出T-SQL,将显示在日期/出了很多像这样的: enter image description here

由于很多空去上15年6月12日,我需要表现出2个独立的行允许在日期范围内的差距时,很多没有数量。我尝试过使用MIN和MAX,但我似乎无法弄清楚如何考虑时间差距。任何帮助将不胜感激。我正在使用SQL Server 2012.

谢谢。

+0

你可能需要数量的运行总和,并使用与差距和岛屿问题 –

+0

任何解决方案,我有一个运行总计数量 - 它被称为Run Bal。 – gcresse

回答

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); 
+0

谢谢戈登。这很好。 – gcresse