我有一个Oracle SQL查询,当同一销售订单在整个生命周期内一直处于“暂挂”状态(用于审核,然后释放)时,该查询将返回同一销售订单的多行数据。
在生成的每一行中,通常都应用了保留;有时直到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中完成?任何帮助都是非常感谢的。请让我知道还有什么可以提供更好的清晰度。
发布于 2013-09-06 11:09:35
这被标记为" 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;我正在猜测字段名是什么,但是您需要的结构应该类似于下面的结构。
https://stackoverflow.com/questions/18649146
复制相似问题