我有一个Oracle SQL查询,当“hold”(用于审核然后发布)在整个生命周期中被放置在订单上时,它返回同一销售订单的多行数据。
在生成的每一行中,通常都会应用保留;有时直到SO寿命线的后期才进行保持,或者在其生命线的一个阶段期间根本不进行保持。
在不同的日期和时间最多可以应用4次保留。我想要有四个保持列:H1,H2,H3,H4。
我想知道是否可以在销售订单行中保留这些保留值?意思是销售订单(SO)详细信息的一个记录行,但是在记录的末尾显示了四个保留列 - 所以我有一行而不是3-4行。
示例记录输出,每次应用保持时,它会生成一行:
SO1 - several SO detail fields - "SCH" hold applied - date applied - date released
SO1 - several SO detail fields - no hold applied yet a user has generated an action against the SO so a record gets written
SO1 - several SO detail fields - "PLN" hold applied - date applied - date released
SO1 - several SO detail fields - "DWN" hold applied - date applied - date released
最终结果:
SO1 - SO detail fields - Hold1 (=SCH) - Hold2 (= null) - Hold3 (= PLN) - Hold4 (= DWN)
我不知道如何在PL / SQL中编写(还),所以我想知道这是否可以在Crystal Reports中完成?任何帮助表示赞赏。请让我知道还有什么可以提供更清晰的信息。
答案 0 :(得分:0)
这标记为“sql”,所以我假设SQL解决方案没问题。以下查询将对四列进行分析:
select SalesOrderId,
max(case when seqnum = 1 then hold end) as hold1,
max(case when seqnum = 2 then hold end) as hold2,
max(case when seqnum = 3 then hold end) as hold3,
max(case when seqnum = 4 then hold end) as hold4
from (select s.*, row_number() over (partition by SalesOrderId order by ReleaseDate) as seqnum
from (<your query>) s
) s
group by SalesOrderId;
我猜测字段名称是什么,但您需要的结构与此类似。