检测数据集中的变化

我有一个这样的结构的数据集:

ContractNumber | 每月付款| 持续时间| StartDate | 结束date

一个合同编号可以发生多次,因为这个数据集合是具有相同结构的不同报告。

现在我想过滤/查找月度付款和/或持续时间和/或开始date和/或结束date不同的合同号码。

示例(请注意合同号码不是主键):

ContractNumber | MonthlyPayment | Duration | StartDate | EndDate 001 | 500 | 12 | 01.01.2015 | 31.12.2015 001 | 500 | 12 | 01.01.2015 | 31.12.2015 001 | 500 | 12 | 01.01.2015 | 31.12.2015 002 | 1500 | 24 | 01.01.2014 | 31.12.2017 002 | 1500 | 24 | 01.01.2014 | 31.12.2017 002 | 1500 | 24 | 01.01.2014 | 31.12.2018 

有了这个示例数据集,我需要用特定的查询来检索002。 001是一样的不变,但002随时间变化。

除了编写一个运行在Excel上的VBA脚本外,对于如何用SQL解决这个问题,我还没有任何可靠的想法

我的第一个想法是分组的SQL方法,其中相同的值被分组在一起,但不是不同的分组。 我目前正在试验这个。 我目前的尝试是:

1.)有通常的表格

2.)用这个结构创build第二个表/查询:

ContractNumber | AVG(MonthlyPayment)| AVG(持续时间)| AVG(StartDate)| AVG(结束date)

我用分组创build的。

例如

表格1。)

 ContractNumber | MonthlyPayment 1 | 10 1 | 10 1 | 20 2 | 300 2 | 300 2 | 300 

表2)

 ContractNumber | AVG(MonthlyPayment) 1 | 13.3 2 | 300 

3)现在我想find明确的合同号码,在这个例子中,只有MonthlyPayment – 不等于平均值​​(它应该是相同的,否则我们需要find一个变化)。

你有什么想法我可以解决这个问题吗? 否则我将开始编写VBA或Python脚本。 我有CSV数据集,所以现在我也可以使用MySQL,Power Bi或Excel。

我需要执行这个分析一次,所以我不需要一个完整的方法,所以查询可以分成不同的步骤。

非常感激! 非常感谢你。

要查找具有差异的所有合同编号,请使用:

 select ContractNumber from ( select distinct ContractNumber, MonthlyPayment , Duration , StartDate , EndDate from MyTable ) x group by ContractNumber having count(*) >1