我有一张用于水电费账单的桌子。简化后,每一行都有一个账单引用的财产的标识符,具有定义账单所涵盖的期间和账单金额的日期和日期。有时账单金额为空。我的问题是,有些期间没有包含账单金额的行。也就是说,如果我按照属性编号和日期范围对表进行分组,只使用具有非空账单金额的行,那么我会得到一个没有重复期间的好表,但是存在(一些)间隙。
现在,有时差距完全或部分由原始数据中具有空账单金额的从头到目前的行覆盖。这些是合法的行,并且数据的结构使得在这种情况下,具有账单金额的相邻行将包括具有空账单金额的期间的费用。因此,我需要一个表来说明数据中涵盖的所有日期,而不会重复。但是,数据中有时会存在真正的差距,这是一个完全没有涉及的时期,我也需要确定那些真正的差距。
在我看来这是一种可能的方法。
第一步:首先使用分组查询创建一个表,该查询使用从到目前为止的帐单金额合并所有行。我有这个。
SELECT Bill_Summary。[Property No],Bill_Summary。[Bill Account No],Bill_Summary。[Bill Date],Bill_Summary。[Property Address],Bill_Summary。[Bill From Date],Bill_Summary。[Bill To Date],[ Bill_Summary]![Bill To Date] - [Bill_Summary]![Bill From Date] AS [Days USe],Bill_Summary.Consumption,Bill_Summary。[Total Milk Charge],Bill_Summary。[Total Honey Charge],Bill_Summary。[Total Milk Standing]收费],Bill_Summary。[总蜂蜜常备费],Bill_Summary。[账单金额] 来自Bill_Summary GROUP BY Bill_Summary。[Property No],Bill_Summary。[Bill Account No],Bill_Summary。[Bill Date],Bill_Summary。[Property Address],Bill_Summary。[Bill From Date],Bill_Summary。[Bill To Date],[Bill_Summary] ![Bill To Date] - [Bill_Summary]![Bill From Date],Bill_Summary.Consumption,Bill_Summary。[Total Milk Charge],Bill_Summary。[Total Honey Charge],Bill_Summary。[Total Milk Standing charge],Bill_Summary。[Total比尔_普通话[比尔金额] HAVING(((Bill_Summary。[Bill Amount])不是空的)) 订单Bill_Summary。[财产号],Bill_Summary。[Bill From Date];
第二步:然后从创建的表中识别出存在间隙的每个属性(因此结果将是列表,属性否,间隙的开始日期,间隙的结束日期)。我该怎么做?
第三步:然后回到原始数据并查找完全填充该间隙的线(或可能多于一条线)(或者部分填充它,更棘手,但绝不会溢出 - 不会有重叠)。如果我知道如何做第二步,我想我有一些线索如何做到这一步 - 至少对于差距的精确匹配。
第四步:联盟查询第一步和第三步的结果,以创建一个表,该表可以计算数据中涵盖的所有日期而不会重复。
第五步:与第二步一样,确定决赛桌中的真正差距。按物业号和从日期 - 迄今为止获取它们的列表。
以上使用Access,这是我在工作环境中可以使用的工具。
那就是它。
提前感谢您的帮助。