- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 SQL Server 2012 并有一个如下表:
DECLARE @T TABLE(Id INT, [Type] CHAR(1), Quantity INT, Price MONEY, UnitPrice AS (Price/Quantity))
INSERT INTO @T VALUES
(1, 'I', 30, 1500),
(2, 'O', 5, NULL),
(3, 'O', 20, NULL),
(4, 'O', 2, NULL),
(5, 'I', 10, 2500),
(6, 'I', 8, 1000),
(7, 'O', 3, NULL),
(8, 'O', 10, NULL),
(9, 'I', 12, 3600)
在我的表中,我有一个带有值的类型列('I'和'O')
我有'I'类型记录的单价和最后使用的'O'类型记录'I'键入记录值我要计算 RunningTotalPrice(数量总和*每行的单价)。
以下代码计算 RunningTotalQuantity:
SELECT *,
SUM(CASE WHEN [Type] = 'I' Then Quantity ELSE -Quantity END)OVER (ORDER BY Id) AS QuantityRunningTotal
FROM @T
这个查询的结果是:
Id Type Quantity Price UnitPrice QuantityRunningTotal
1 I 30 1500/00 50/00 30
2 O 5 NULL NULL 25
3 O 20 NULL NULL 5
4 O 2 NULL NULL 3
5 I 10 2500/00 250/00 13
6 I 8 1000/00 125/00 21
7 O 3 NULL NULL 18
8 O 10 NULL NULL 8
9 I 12 3600/00 300/00 20
我想要下面的结果
Id Type Quantity Price UnitPrice QuantityRunningTotal Price RunningTotalPrice
1 I 30 1500/00 50/00 30 1500/00 1500/00
2 O 5 NULL 50/00 25 250/00 1250/00
3 O 20 NULL 50/00 5 1000/00 250/00
4 O 2 NULL 50/00 3 100/00 150/00
5 I 10 2500/00 250/00 13 2500/00 2650/00
6 I 8 1000/00 125/00 21 1000/00 3650/00
7 O 3 NULL 125/00 18 375/00 3275/00
8 O 10 NULL 125/00 8 1250/00 2025/00
9 I 12 3600/00 300/00 20 3600/00 5625/00
在此结果中,Null Unitprice Column value with last exists unitprice in before records.并计算价格(数量 * 单价)和计算总价格。
最佳答案
不幸的是 LEAD
和 LAG
函数不能用于最后一个非 NULL
值,所以你需要使用 OUTER APPLY
以获取前一个 UnitPrice
以在类型为“O”的行中使用:
SELECT t.ID,
t.[Type],
t.Quantity,
t.Price,
t.UnitPrice,
SUM(CASE WHEN t.[Type] = 'I' THEN t.Quantity ELSE -t.Quantity END) OVER (ORDER BY t.Id) AS QuantityRunningTotal,
CASE WHEN t.[Type] = 'I' THEN t.Price ELSE t.Quantity * p.UnitPrice END AS Price2,
SUM(CASE WHEN t.[Type] = 'I' THEN t.Price ELSE -t.Quantity * p.UnitPrice END)OVER (ORDER BY t.Id) AS QuantityRunningTotal
FROM @T AS t
OUTER APPLY
( SELECT TOP 1 t2.UnitPrice
FROM @T AS t2
WHERE t2.ID < t.ID
AND t2.UnitPrice IS NOT NULL
ORDER BY t2.ID DESC
) AS p;
关于sql-server - SQL Server 使用查询计算运行总值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603629/
创建我用下面的代码制作了分布图: from numpy import * import numpy as np import matplotlib.pyplot as plt sigma = 4.1
我想我已经尝试了这方面的所有方法,但我无法弄清楚这一点。我只是想在用户增加数量时更新表中每一行的总价。到目前为止我已经尝试过 HTML 中的数学:data-bind="text: parseFloat
我的数据库中有一个表,如下所示: id | date | amount ======================== 1 | 2015-01-26 | 1000 2 | 2015-
我有一个条形图,总值通常重叠在上面,如下所示。我尝试减少图形的面积、宽度和高度,这个问题得到解决,但对于其他一些值再次出现,是否有任何永久的解决方案来避免重叠? 请查找下面的代码 $('#' + d
我一直在四处寻找,似乎找不到这个问题的答案,希望得到任何帮助。 简而言之,我有两个表:付款表和成员(member)表。 我已执行以下操作来查找成员(member) ID 与付款 ID 列中的 ID 匹
我是一名优秀的程序员,十分优秀!