我的SQL代码如下所示。我遇到的问题是计算每个数字的值的总和。单独执行它们是可以的,并且在代码中指定数字时有效,但在未指定数字时无效,并且我希望总和计算适用于所有单独的数字。
{ 旨在计算纳税时的值(value)。因此,纳税日期之前的所有值都将被忽略,纳税日期之后发生的所有单位条目将从总单位中减去。税收单位也被减去。每个基金的税点总单位乘以税点价格。将这些资金的值(value)相加,得出该数字的总值(value)。 }
这是我完成的代码:
SELECT DISTINCT
A.Number,
CAST(ROUND((SELECT SUM(Val)
FROM (SELECT((S.TotalUnits -
(SELECT SUM(Units)
FROM TableIH AS F WHERE F.Fund = S.Fund AND F.Number = S.Number
AND F.Date >= (SELECT MIN(Date) FROM TableIH AS D
WHERE D.Fund= F.Fund AND D.Number = F.Number AND D.Entry = 'Tax' )
)
) * T.Price
) AS Val
FROM TableIH T
INNER JOIN TableID S
ON T.Number = S.Number
WHERE S.TotalUnits > 0 AND T.Fund = S.Fund
AND T.Price = ANY (SELECT (Price)
FROM TableIH AS E WHERE E.Entry = 'Tax' AND E.Number = T.Number)
)t
)
,2)
AS DECIMAL (25,2)) AS "Value"
FROM
TableIH A
INNER JOIN TableID C
ON C.Number = A.Number
group by A.Number
表格是:
表IH:
数量 基金 入场单位 价格 日期
12 YY RE 6 0.2 2015-02-02
12 YY 税金 -10 0.1 2015-01-13
13 XX RE 6 0.2 2015-02-12
13 XX 税金 -20 0.05 2014-12-11
13 MM 税 -25 0.6 2014-12-10
13 MM RE 8 0.2 2013-11-02
表ID
数量 基金 总单位
12 YY 2000
13 XX 1500
13 MM 500
期望的结果:
数字 值
12 [ ((2000) - (6) - (-10)) * 0.1 ] = 200.4
13 [ ((1500) - (6) - (-20)) * 0.05 ] + [ ((500) - (-25)) * 0.6 ] = 390.7
但得到: - 结果是对所有数字求和,而不是在每个数字之间除以它。
数字 值
12 [ (200.4 + 390.7] = 591.1
13 [ (200.4 + 390.7] = 591.1
任何有关错误的帮助将不胜感激
最佳答案
晚上好,问题出在你的第三个嵌套子查询中,你的总和没有组,所以它对所有单位求和,所以你只会得到一个总数:
SELECT SUM(Units)
FROM TableIH AS F WHERE F.Fund = S.Fund AND F.Number = S.Number
AND F.Date >= (SELECT MIN(Date) FROM TableIH AS D
WHERE D.Fund= F.Fund AND D.Number = F.Number AND D.Entry = 'Tax'
关于mysql - 多个不同 ID 的总和计算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640830/