0

我正在使用一个数据库,该数据库有一个表格,其中包含每个期末的所有付款。我必须计算出本月付款与上一期末相比的差异。我写了一个 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',

有许多这样的计算要做。这样做的最佳方法是什么?

4

1 回答 1

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
于 2013-02-08T09:21:31.427 回答