获取每个日期间隔的管道总长度
|
我有一个包含
pipes
的表,该表安装在某个位置。
安装日期始终为空,删除日期可以为NULL
Type Installed Removed Length
PT2 01/01/2011 NULL 2000
PT2 01/01/2011 NULL 2000
PT1 01/01/2011 NULL 1200
PT1 01/01/2011 NULL 1200
PT1 15/02/2011 25/02/2011 1000
PT1 15/02/2011 25/02/2011 1000
现在,我需要概述给定月份安装的每种类型的总长度,因此结果应为例如从01/02/2011
到28/02/2011
:
Type From To Length
PT2 01/02/2011 28/02/2011 4000
PT1 01/02/2011 14/02/2011 2400
PT1 15/02/2011 24/02/2011 4400 Edit: (starts on 15 not 14)
PT1 25/02/2011 28/02/2011 2400
编辑:对此预期结果进行澄清。
最后,它将用于查看请求月份内任何给定时刻的管道总长度。因此,如果您看上表,在2月2日安装了PT2
管道。它们是在一月份安装的,但仍然存在,因此整个月的总长度为4000。
与ѭ6相同:从2月开始,已安装PT1管道,因此为2400。但是,在15日,又安装了2条长度为1000的PT1管道,因此在15日至25日期间,PT1管道的总长度为4400。
这2个管道已在25日移除,因此25月底的月底再次是2400。
我希望这现在更有意义。
我正在努力使用SQL执行此操作,这只是为了一份报告,通常在任何给定的月份中都安装了数百个这样的管道。
它可以在Powerbuilder应用程序中使用,因此,如果您知道任何可能有助于共享的数据窗口技巧,便会发现。
没有找到相关结果
已邀请:
3 个回复
蜂佬渺
而且,是的,参数前面的冒号(我已将您切换为开始日期和结束日期……对我来说更容易了,现在您可以进行六个月的报告了)意味着我正在利用DataWindow。 (我敢打赌,有人可以通过上述概念更改来创建一种纯SQL方法,但我会按照我所知道的去做。) 将SQL加载到DataWindow中(我使用了自由格式),并可以选择通过类型和date_of_change(皮带和悬挂器)设置客户端排序。数据集包含空的删除日期作为查询范围结束后第二天的更改,因此,请创建一个过滤器以排除这些空值:
根据类型创建一个组,然后将type放入组标题中。 在详细信息区域(所有后续控件都将移至其中)中,使用以下表达式创建一个名为date_from的计算:
使用以下表达式创建一个名为date_to的计算:
使用以下表达式创建一个名为installed_length的计算:
选择详细信息区域中的所有控件,并为它们提供以下可见表达:
如果下一行具有相同的date_of_change和type,它将使它们不可见;您只希望最后一行显示今天所有活动的总和。 将明细区拖动到高度为零,并使明细区自动调整高度。 这将为您提供您所追求的版本。 FWIW,我试图使报表按日期排序(不清楚这是否是您想要的,还是先按类型排序),但是它破坏了CumulativeSum()功能。也许其他人可以解决。 祝好运, 特里 附言如果SO让我投入这么多,这就是我的原型的输出。它可能对您没有用处。
桔适丛
凰葱崎济邯
没有显示一月或二月安装了多少PT1管道。 以下查询显示每月安装的管道总长度,每种类型一行。
退货
以后。 。 。 对于任何给定日期的管道总长度,我可能会使用这样的内容。
该查询返回