这是我解决支付问题的一部分问题。这个是第四个,希望是最后一个。
我有客户表,我只从它获取大约10个字段。问题是,它包含重复项。不是整行是重复的,而是我识别包含重复的记录的两个字段(尽管只有少数)。这两个领域是
我的测试表看起来像这样
id account_no supplier customer_name meter_no StartDate EndDate EnrollDate active account_type usage* repid
--- ----------- ---------- -------------------- --------- ------------ ------------- ------------- ----------- ------------ -------- ------
1 1000 MOBIL photo company 345 11/01/2011 12/01/2011 09/01/2011 active cat2 2000 100
2 1000 MOBIL photo company 145 11/05/2011 12/04/2011 09/15/2011 active cat3 2000 100
3 1000 MOBIL photo company 645 11/05/2010 12/04/2010 08/25/2010 inactive cat2 1000 100
4 1001 HESS Adventure company 485 11/01/2011 12/01/2011 09/01/2011 active cat2 1500 200
5 1002 SHELL School company 678 11/05/2011 12/04/2011 09/15/2011 active cat2 3000 100
6 1003 BP Hospital company 595 11/05/2010 12/04/2010 08/25/2010 inactive cat2 5000 300
请注意,帐号1,2和3是重复的,因为它们具有相同的Account_no和Supplier。虽然其他领域不同,但这意味着真正意义上并不重复。例如,所有这三个帐户都是不同的meter_number。
每条记录都分配给一个代表(最后一列)。 Reps是根据加入此表与另一个来自外部的表支付的。我们仅基于Account_no和Supplier这两列进行匹配。如果他们匹配我们说好,我们有钱给你,代表得到报酬。这里的问题是当我加入表格时,您可以看到相同的account_no和供应商出现两次某些记录。那些需要删除。
那究竟是什么问题呢?报告完成后,我们还希望打印account_no和Supplier以外的数据。这个数据包括customer_name,start_date,end_date,usage等。如果我按所有列分组,它就不会删除重复项。我想要做的是只分组两列并显示其他数据。典型的输出就像这样
id account_no supplier customer_name meter_no StartDate EndDate EnrollDate active account_type usage* repid
--- ----------- ---------- -------------------- --------- ------------ ------------- ------------- ----------- ------------ -------- ------
1 1000 MOBIL photo company 345 * * * * * 4000 100
4 1001 HESS Adventure company 485 11/01/2011 12/01/2011 09/01/2011 active cat2 1500 200
5 1002 SHELL School company 678 11/05/2011 12/04/2011 09/15/2011 active cat2 3000 100
6 1003 BP Hospital company 595 11/05/2010 12/04/2010 08/25/2010 inactive cat2 5000 300
上表实际上是我的看法。它将摆脱所有重复的account_no和供应商,但其他字段会发生什么,尤其是如果该组的值在该组中不相同?我对一个或另一个值感到满意。这里没有严格的标准,因为这些重复的内容很少。 *表示任何数据都没有问题,但它应该属于一个或另一个或两个记录的总和。
创建此表的一种想法是在上表中添加一个附加列,并列出在该组中找到的记录数。
如有任何疑问,请询问。注意重要的列是用法,我希望得到该组的用法总和。但如果不是组中的最高值也可以。
我不确定这是否可以在SQL查询中完成。可能会有办法。
答案 0 :(得分:0)
如果您使用一个值或另一个值,您可以使用分组的选择使用Min()或Max()函数,您将得到一个或另一个。
select a, b, min(y), max(z) from table group by a, b