列Y中每个不同值的列X中的值不同

时间:2014-05-25 15:46:10

标签: mysql sql

我使用以下查询来整理表格中的数据并且计算不正确:

SELECT rowid, customer, category, SUM(DISTINCT return) as returntotal, SUM(DISTINCT release) as releasetotal FROM orders GROUP BY customer

这是我目前的表格:

enter image description here

这就是我需要的查询结果:

enter image description here

我需要DISTINCT'返回'中的DISTINCT值的总和,以及'类别&#39 ;; “释放”中DISTINCT值的总和'通过DISTINCT'类别'以及所有GROUPED BY客户。我当前的查询正在跳过具有相同值的DISTINCT类别。例如:在顶部图片的rowid 17-19中,我的查询结果为' 465'对于斯科特来说,我需要的价值是每个DISTINCT类别的DISTINCT值或465个家庭用品和465个草坪。

每行的输出应如下所示:

customer (no duplicates)     totalreturn     totalrelease

以下是每行所需输出的示例:

Scott       $0      $930
Michelle    $123    $250
Brad        $2070   $0

问题:

  1. 我的陈述应该如何产生我需要的结果?
  2. 如果我已经使用DISTINCT ??
  3. ,则使用GROUPED BY矫枉过正

    谢谢!

1 个答案:

答案 0 :(得分:0)

要获得最终结果,请使用子查询:

select customer, sum(return) as return, sum(category) as category
from (select distinct customer, return, release, category
      from orders
     ) o
group by customer;

现在我已经说过,我认为您的基础数据存在问题。每当您考虑sum(distinct)count(distinct)时,您都会遇到数据问题。在这种情况下,我假设数据是按orders表中的类别故意非规范化的。您真的应该从不同的表中获取每个类别的公共值。或者,orders中的副本不应该存在。