如果我有两年的名字和年收入的数据库作为列举的列(我知道这是糟糕的数据库设计,但我现在没有自由改变它)。例如:
Name_2000,Name_2010,Income_2000,Income_2010
如何构造查询以返回第一个结果列中两个名称列中的所有唯一名称。第二个结果列应该是该名称2000年所有收入的总和。第三个结果列应该是该名称2010年所有收入的总和。
显然,在这个例子中,一个人(记录)可能会在年份之间更改姓名,或者在任何一年都没有姓名。
我可以在一个查询中执行此操作吗?通过某个名称子集进行过滤的能力也很方便。
答案 0 :(得分:0)
我建议使用一个子查询,将两个结果联合起来,每个名称和收入一组,但每个都为另一年的收入返回一个虚拟0。
这样的事情: -
SELECT aname, SUM(aincome2000), SUM(aincome2010)
FROM
(
SELECT Name_2000 AS aname, Income_2000 AS aincome2000, 0 AS aincome2010
FROM sometable
UNION ALL
SELECT Name_2010 AS aname, 0 AS aincome2000, Income_2010 AS aincome2010
FROM sometable
) sub1
GROUP BY aname