期末 - 差异

时间:2013-02-08 09:15:16

标签: sql-server sql-server-2008

我正在使用一个数据库,该数据库的表格包含每个期末的所有付款。与上一期间相比,我必须计算出这个月付款的差异。我写了一个SQL查询,但它看起来很脏,看起来不是最好的方法。

((SELECT payment FROM paytable py1 WHERE py1.pay_id = pn.pay_id  AND period_id = '201310') 
  - 
((SELECT payment FROM paytable py2 WHERE py2.pay_id = pn.pay_id AND (period_id = '201310' -   1)))) as 'Payment Variance',

要进行许多这些计算。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

这有帮助吗?基本上在句号-1上将同一个表连接到自身。

SELECT py1.period_id, py1.payment - py2.payment as 'Payment Variance'
 FROM paytable py1 
 INNER JOIN paytable py2
        ON  py2.pay_id = py1.pay_id
        AND py2.period_id = CAST(CAST(py1.period_id as int) -1 as varchar(10))
 WHERE  py1.pay_id = pn.pay_id