1

我有一张包含名字、中间名、姓氏、出生年份、市镇和收入详细信息的表格。数据集包含几年。问题是数据不包括每个人的唯一 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。关于如何解决这个问题的任何想法?

4

1 回答 1

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条件放在一起,而不是像在您的帖子中那样用逗号分隔。

于 2013-09-29T12:58:09.293 回答