比较同一个sql表中两行的数据

Kha*_*han 2 sql t-sql sql-server sql-server-2008-r2

我试图找出同一个表中两行之间的差异.无法找到正确的查询.例如,我有

Year   Item      Qty    Amount 
------------------------------
2014   Shoes     500     2500 
2014   Ties      300      900 
2014   Pants     200     4000 
2015   Shoes     600     3000 
2015   Ties      200      600
Run Code Online (Sandbox Code Playgroud)

我试图找出从去年到今年增加(或减少)的数量.我总是只有两年时间来比较.查询结果应如下所示:

Items   Qty Diff   Amount Diff 
------------------------------
Shoes      100         500 
Ties    (-100)      (-300) 
Pants     Null        Null 
Run Code Online (Sandbox Code Playgroud)

查询应该是什么样的?

DVT*_*DVT 5

如果你想要包含所有东西,那么你可以使用FULL OUTER JOIN,如果只是前一年的那个LEFT OUTER JOIN,如果你想要一个同时具有早期和后一年的那个,那么INNER JOIN.

SELECT
    T1.Item
    , (T2.QTY-T1.QTY) AS [QTY Diff]
    , (T2.Amount - T1.Amount) AS [Amount Diff]
FROM
    <<Table>> T1
    LEFT OUTER JOIN <<Table>> T2
        ON T1.Item=T2.Item
        AND T1.YEAR=(T2.YEAR-1);
Run Code Online (Sandbox Code Playgroud)