社区咨询,它让我查询了这些数据:
ID_KAR ALMACEN FECHA CODIGO_PROD MONTO
----------------------------------------------------------------------------------
16275 AVIOS E INSUMOS 2011-01-01 00:00:00.000 0 ANS0001UNI 18100.0000
39823 AVIOS E INSUMOS 2011-06-06 00:00:00.000 2 ANS0001UNI 18100.0000
8718 AVIOS E INSUMOS 2011-01-01 00:00:00.000 0 AV-AC-766 9015.0000
23243 AVIOS E INSUMOS 2011-01-06 00:00:00.000 2 AV-AC-766 477.0000
23247 AVIOS E INSUMOS 2011-01-06 00:00:00.000 2 AV-AC-766 40.0000
23255 AVIOS E INSUMOS 2011-01-06 00:00:00.000 2 AV-AC-766 35.0000
23251 AVIOS E INSUMOS 2011-01-06 00:00:00.000 2 AV-AC-766 118.0000
原来我需要在查询中添加一个列,但是这些数据我得到了查询的估计值。 我需要访问以前的记录来计算新的金额。
我需要访问上一条记录中的数据,如果我将自己定位在寄存器2中,我需要访问1以在寄存器2中显示新的数量。
答案 0 :(得分:0)
最好的办法是使用CTE和row_number或Rank 然后在连接中执行n-1。 如下所示:
WITH
ANSICTE
AS
(
SELECT RANK() OVER (Partition BY Codigo_Prod ORDER BY fecha ASC ) as Ranks
,Codigo_Prod
FROM Table
)
SELECT ANSICTE.Codigo_Prod, ANSICTE.Ranks, ANSICTE2.Fecha, ...
FROM ANSICTE
LEFT OUTER JOIN ANSICTE AS ANSICTE2
ON ANSICTE.CODIGO_Prod = ANSICTE2.Codigo_Prod
AND ANSICTE.Ranks = ANSICTE2.Ranks-1