【发布时间】:2018-01-19 01:58:46
【问题描述】:
如何将前行值和当前行值相加到新列? 从这个查询:
SELECT
A.DATE,
A.SHIFT,
A.RECEIPT,
A.ISSUE
FROM
(SELECT
B.DATE,
B.SHIFT,
CASE WHEN B.JUDUL='ISSUE' THEN B.QTY END AS ISSUE,
CASE WHEN B.JUDUL='RECEIPT' THEN B.QTY END AS RECEIPT
FROM
(SELECT
T1.DATE AS DATE,
T1.SHIFT AS SHIFT
SUM(T1.QTY) AS QTY,
'ISSUE' AS JUDUL
FROM
ISSUE T1
WHERE
T1.PO=[%0]
GROUP BY
T1.DATE
UNION
SELECT
T2.DATE AS DATE,
T2.SHIFT AS SHIFT,
SUM(T2.QTY) AS QTY,
'RECEIPT' AS JUDUL
FROM
RECEIPT T2
WHERE
T2.PO=[%0]
GROUP BY
T2.DATE) B) A
我得到了这样的结果:
DATE SHIFT RECEIPT ISSUE
02.01.18 1 39.20 204.20
02.01.18 2 112.95 145.60
02.01.18 3 125.46 0.00
03.01.18 1 131.72 145.60
03.01.18 2 132.79 145.60
03.01.18 3 118.28 72.85
04.01.18 1 122.04 145.60
04.01.18 2 155.08 72.80
04.01.18 3 116.98 72.80
05.01.18 1 91.69 145.60
但实际上我需要这样的结果:
DATE SHIFT RECEIPT ISSUE TotalReceipt TotalIssue VAR
02.01.18 1 39.20 204.20 39.20 204.20 165.00
02.01.18 2 112.95 145.60 152.15 349.80 197.65
02.01.18 3 125.46 0.00 277.61 349.80 72.19
03.01.18 1 131.72 145.60 409.33 495.40 86.07
03.01.18 2 132.79 145.60 542.12 641.00 98.88
03.01.18 3 118.28 72.85 660.40 713.85 53.45
04.01.18 1 122.04 145.60 782.44 859.45 77.01
04.01.18 2 155.08 72.80 937.52 932.25 -5.27
04.01.18 3 116.98 72.80 1,054.50 1,005.05 -49.45
05.01.18 1 91.69 145.60 1,146.19 1,150.65 4.46
我需要前一个班次日期的数据来比较签发和收据交易之间的数据。
【问题讨论】:
-
请指定您使用的数据库系统。答案可能不同。
-
我用的是SAP B1 v9.2,不知道数据库系统是什么。
标签: sql sql-server sql-server-2008-r2