我正在使用一个数据库,该数据库的表格包含每个期末的所有付款。与上一期间相比,我必须计算出这个月付款的差异。我写了一个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',
要进行许多这些计算。这样做的最佳方式是什么?
答案 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