在我们的销售系统中,最后添加了折扣,但是将数据移动到另一个系统时,我需要在每一行中都使用折扣。
在这种情况下,有3个组,它们分别用LineType 2和64分隔。在第一组中,我需要从Forumula_discount = 15行ID 972922获得结果,并将其分成四个行,然后在其他组中。
您能否指导我如何最好地在SQL Server的Select语句中解决此问题。
关于, BG
答案 0 :(得分:1)
您需要定义组,我认为您可以用累积和来完成。然后使用窗口函数“传播”值:
refreshId
答案 1 :(得分:0)
这里真正需要的是在同一张表中的2个视图。一种观点代表产品,另一种观点代表折扣。这是传统的旧学校系统。然后,您可以根据行类型将表的2个不同视图彼此关联。与其创建实际的数据库视图,不如直接使用自我联接。我将表别名两次... p代表产品,d代表折扣。
基本上,“产品”的行类型为1,折扣为64。您从未提及表的名称,但是在此示例中,我将其称为“ dbtable”。试试这个。
select p.docno, p.id, p.linetype, p.type, p.item_NO, d.formula_discount
from dbtable p inner join dbtable d
on p.linetype = d.linetype
and d.linetype = 64 -- This limits 'd' rows to just discounts
where p.linetype = 1;
请注意,您实际上可以为每个视图定义数据库视图,以使其更具体。