【发布时间】:2021-12-16 00:52:40
【问题描述】:
DECLARE @BalanceTblRec TABLE
(
NetAmount decimal(18, 3),
Percentage int,
[Description] nvarchar(max)
)
DECLARE @BalanceTblPay TABLE
(
NetAmount decimal(18, 3),
Percentage int,
[Description] nvarchar(max)
)
INSERT INTO @BalanceTblRec
VALUES (21, 11, 'ReceiveReceipt'),
(20, 11, 'ReceiveReceipt'),
(20, 10, 'ReceiveReceipt'),
(20, 20, 'ReceiveReceipt'),
(10, 10, 'ReceiveReceipt')
INSERT INTO @BalanceTblPay
VALUES (10, 11, 'PayReceipt'),
(10, 11, 'PayReceipt'),
(10, 2, 'PayReceipt'),
(5, 15, 'PayReceipt'),
(30, 10, 'PayReceipt'),
(20, 10, 'PayReceipt')
;WITH MaPercentage AS
(
SELECT
Percentage,
SUM(NetAmount) AS Net,
'Receive' AS Flag
FROM
@BalanceTblRec
GROUP BY
Percentage
UNION ALL
SELECT
Percentage,
SUM(NetAmount) AS Net,
'Pay' AS Flag
FROM
@BalanceTblPay
GROUP BY
Percentage
)
SELECT * FROM MaPercentage
现在我想从net 中减去net,基于falg,receive - pay 基于百分比。
像这样:
Per Net Flag
-----------------------
10 30.000 - 50 Receive
11 41.000 - 20 Receive
20 20.000 Receive
2 10.000 Pay
15 5.000 Pay
【问题讨论】:
-
从
net中减去net为零...我认为您需要改写一下。 -
从 net 中减去 net 表示其相同的列,但基于相同的百分比和标志(即接收 - 支付),因为您可以在上一节中看到我想要的结果
-
顺便说明一下:SQL Server 2008 和 2008 R2 目前完全不受支持(甚至超出了扩展支持) - red-gate.com/simple-talk/sql/database-administration/… - 是时候升级了!跨度>
-
感谢您的注意,我害怕升级,因为很多更改可能在更高版本的 sql 中不起作用,您能否确认它完全保存从 2008 升级到最新版本而不是语法或任何其他兼容问题
标签: sql sql-server sql-server-2008