首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Crystal Reports:将多行中的值放入各自的列中?

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

Stack Overflow用户
提问于 2013-09-06 10:56:06
回答 1查看 550关注 0票数 0

我有一个Oracle SQL查询,当同一销售订单在整个生命周期内一直处于“暂挂”状态(用于审核,然后释放)时,该查询将返回同一销售订单的多行数据。

在生成的每一行中,通常都应用了保留;有时直到SO生命线的后面才应用保留,或者在其生命线的一个阶段中根本不应用保留。

最多可以在不同的日期和时间应用4个暂挂。我希望有四个保留列: H1、H2、H3、H4。

我想知道是否可以让它们在自己的列中保存销售订单行中的值?这意味着,销售订单( so )详细信息有一个记录行,但在记录的末尾显示了四个保留列-因此我只有一行,而不是3-4行。

示例记录输出,其中每次应用保留时都会生成一行:

代码语言:javascript
复制
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

最终结果:

代码语言:javascript
复制
SO1 - SO detail fields - Hold1 (=SCH) - Hold2 (= null) - Hold3 (= PLN) - Hold4 (= DWN)

我还不知道如何用PL/SQL编写,所以我想知道这是否可以在Crystal Reports中完成?任何帮助都是非常感谢的。请让我知道还有什么可以提供更好的清晰度。

EN

回答 1

Stack Overflow用户

发布于 2013-09-06 11:09:35

这被标记为" SQL ",所以我假设SQL解决方案是可以的。以下查询透视这四列:

代码语言:javascript
复制
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;

我正在猜测字段名是什么,但是您需要的结构应该类似于下面的结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18649146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档