我有以下 SQL 问题,我实际上正在寻找最有效的方法来执行此操作。假设我有下表:
r|Company - StartPeriod - EndPeriod - NumberOfEmployees - NumberOfMachines ...
1|A - 2014-1-1 - 2014-2-5 - 30 - 1
2|A - 2014-2-6 - 2014-3-7 - 30 - 1
3|A - 2014-3-8 - 2014-4-9 - 31 - 1
4|A - 2014-4-9 - 2014-5-1 - 32 - 1
5|B - 2014-1-2 - 2014-2-1 - 20 - 2
6|B - 2014-2-2 - 2014-3-1 - 20 - 2
7|B - 2014-3-2 - 2014-4-1 - 20 - 2
注意到冗余的数据量了吗?这是因为这些公司时不时地被抽样,因此这些时期的长度实际上是随机的。
现在的问题是,当且仅当变量 NumberOfEmployees、NumberOfMachines 等相同但 StartPeriod 和 Endperiod 不同时,如何合并行?当然,我想用最早的一个替换开始期,用最晚的一个替换结束期。
r 只是一个指标,而不是数据库中的变量。在这种情况下,1 和 2 将被合并,但 3,4 将被保留,因为它具有不同的值(即它有 31 名员工而不是 30 名)。
在我看来,这是一个非常困难的问题,我什至不确定 SQL 是否可以做到这一点。
结果输出将是:
r|Company - StartPeriod - EndPeriod - NumberOfEmployees - NumberOfMachines ...
1|A - 2014-1-1 - 2014-3-7 - 30 - 1
2|A - 2014-3-8 - 2014-4-9 - 31 - 1
3|A - 2014-4-9 - 2014-5-1 - 32 - 1
4|B - 2014-1-2 - 2014-4-1 - 20 - 2
感谢一切!