Crystal Reports:将多行中的值放入自己的列中?

时间:2013-09-06 02:56:06

标签: sql crystal-reports oracle10g report

我有一个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中完成?任何帮助表示赞赏。请让我知道还有什么可以提供更清晰的信息。

1 个答案:

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

我猜测字段名称是什么,但您需要的结构与此类似。