0

1つのIDのみを使用して、1つの列から上位2行を減算する方法を知っている人はいますか? サンプルクエリは次のとおりです。

SELECT top 2 a.consumption,
             coalesce(a.consumption -
                     (SELECT b.consumption
                      FROM tbl_t_billing b
                      WHERE b.id = a.id + 1), a.consumption) AS diff
FROM tbl_t_billing a
WHERE a.customerId = '5'
ORDER BY a.dateCreated DESC

customerId #5 を使用して消費列の 1 つの ID を使用して、上位 2 行の違いを取得する方法を知りたいです。試してみましたが、そのための正しいクエリを取得できません。誰か助けてくれませんか?ありがとう!

4

2 に答える 2

1

これを試して:

;with cte as
(
select consumption, customerId, 
row_number() over (partiton by customerid order by datecreated desc) rn
from tbl_t_billing  where customerId = '5'
)

select a.customerId, a.consumption, 
coalesce((a.consumption - b.consumption), a.consumption) consumption_diff
from cte a left outer join cte b on a.rn + 1 = b.rn
where a.rn = 1
于 2013-04-16T20:42:20.947 に答える