【发布时间】:2015-09-29 17:43:53
【问题描述】:
我正在尝试在 sql 2008 的连接中实现交错计算。我可以为 1 个作业 ID 设置 n 行。我在下面创建了一个示例
CREATE TABLE Job
(
JobID INT NOT NULL,
Amount INT NOT NULL
);
INSERT INTO Job (JobID, Amount)
VALUES (1, 25),
(1, 45),
(1, 40),
(2, 25),
(3, 26),
(3, 26);
现在JobID = 1 的折扣是 80 ,所以我期望的查询结果输出如下:
如果是 Amount > Discount ,那么显示 finalvalue = Amount - Discount
但如果 Amount < Discount ,则显示 Finalvalue = Amount - Amount ,
如果 Discount 仍然存在,则从后续行中扣除相同的值。
Job ID Amount FinalValue
1 25 0
1 45 0
1 40 30
所有这些都可以在一个连接中完成吗?
【问题讨论】:
-
请包括折扣表的结构,以便制定正确的答案。
-
您是否有 ID 或创建日期字段可用于告知应应用折扣的顺序?例如,在您的示例中,在将折扣应用于 40 行之前,您是如何决定将折扣应用于 25 和 45 行的?
标签: sql sql-server sql-server-2008