我有一张包含名字,中间名,姓氏,出生年份,市政府和收入详情的表格。该数据集包含数年。问题是数据不包含每个人的唯一ID。
因此,我必须根据上述数据对同一个人进行比较,以找到每年相同的人。不完全准确,但没有别的办法。
我正在尝试编写一个查询,将一年的收入与另一年的收入进行比较,看看收入是如何发展的(下降,上升)。
到目前为止我的尝试:
SELECT e.firstname, e.lastname, e.birth, e.middlename,
e.income-n.income as incomediff
from incomedata e
LEFT JOIN
(select n.firstname, n.lastname, n.birth, n.middlename) as
ON e.firstname = n.firstname, e.lastname = n.lastname, e.birth = n.birth, e.middlename = n.middlename
where e.municip=1234 and e.year IN (2011,2010);
这不起作用(很明显),我想我不能在没有唯一ID的情况下运行JOIN。如何解决这个问题?
答案 0 :(得分:5)
也许你正在寻找这个:
SELECT e.firstname, e.lastname, e.birth, e.middlename,
e.income - n.income as incomediff
FROM incomedata e
LEFT JOIN incomedata n
ON e.firstname = n.firstname
AND e.lastname = n.lastname
AND e.middlename = n.middlename
AND e.birth = n.birth
WHERE e.municip = 1234
AND e.year = 2011
AND n.year = 2010
在多个字段上执行JOIN没有任何问题,您只需将AND
条件放在一起,而不是像在帖子中那样用逗号分隔。