SQL Server-从一行到另一行获取结果

时间:2019-03-07 13:27:03

标签: sql sql-server select

在我们的销售系统中,最后添加了折扣,但是将数据移动到另一个系统时,我需要在每一行中都使用折扣。

在这种情况下,有3个组,它们分别用LineType 2和64分隔。在第一组中,我需要从Forumula_discount = 15行ID 972922获得结果,并将其分成四个行,然后在其他组中。

您能否指导我如何最好地在SQL Server的Select语句中解决此问题。

My result now

关于, BG

2 个答案:

答案 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;

请注意,您实际上可以为每个视图定义数据库视图,以使其更具体。