SAP License:一个关于交叉表的问题

SAP License:一个关于交叉表的问题 图1

在微信群里,崔总问了一个问题,是关于用SQL制作交叉表的,问题如下:
=========================================
主要目的是:将CardCode重复的行 的次数 显示出来
现有一个查询表结果为:
CardCode       Total
A001            100.00
B003           920.00
C002           800.00
A001          830.00
C002          1000.00
A001            500

现在想将结果显示成这样的形式:
CardCode       Total 1     Total 2    Total 3
A001            100.00      830           500
B003            920.00        0               0
C002           800.00      1000            0
(假如有N个CardCode  或者 一个CardCode 有N个Total,同理可以进行依次循环)

想法是通过SQL临时表来实现:
现在想把这个结果插入一个临时表 Tmp
如下:
CardCode       Total        Number
A001            100.00        1
B003           920.00         1
C002           800.00         1
A001          830.00          2
C002          1000.00        2
A001           500              3
然后通过动态SQL语句 以Number   进行 行转列显示成所想达到的效果。
都是Tmp 这个临时该怎么实现?用IF循环?还是游标?还是想通过循环来实现,游标太复杂了。呵呵
但是语句写出来的结果,总是达不到所想要的效果。
===============================

粗略来看,要制作所需要的表貌视很简单,但经过仔细分析,发现要直接通过SQL脚本制作这个交叉表的确很难。在不改变源表结构的情况下希望直接制作交叉表,对我来说几呼不可能实现。

如果增加一个字段于用分离数据,问题就会变得非常简单。按照这个恩路,在源表中增加一个时间字段,一个简单的SQL就可以搞定:

SQL脚本如下:

_declare @Str nvarchar(MAX)
_select @str = ‘T0.Cardcode’
_select @str = @str+ ‘,sum( Case T0.DocDueDate when ”’ + convert(nvarchar,T0.DocDueDate,111) + ”’  then T0.Doctotal else 0 end ) as ”’ + convert(nvarchar,T0.DocDueDate,111) + ””
 from (_select Distinct DocDueDate from ORCT ) T0
_select @str = N’_select ‘+ @str + N’ from ORCT T0 group by T0.CardCode’
_select @str

(备注以后再添请大家关注!)

执行结果如下图:

 

SAP License:一个关于交叉表的问题 图1

SAP相关产品:

SAP GRC权限合规检查系统(简称AMS-R系统)是SAP ERP应用企业进行权限合规检查、违规数据抓取和IT审计的理想工具。

AMS-V SAP License 资产优化管理系统产品:是应用于SAP系统权限风险控制及注册用户账号管理为目标的SAP软件资产精益化管理方案。

SAP 日志堡垒机安全管理系统(简称AMS-L系统)是一款面向SAP ERP 系统的网络安全管理工具,提供基于SAP系统用户业务行为的常态化监管,是对SAP现有日志体系的有效增强管理。

SAP 运维管理平台系统(简称AMS-Ops)旨在确保企业SAP应用系统健康、稳定运行的基础上,持续性的改进、优化,从而满足其业务发展需要的企业级SAP系统运维管理服务。

AMS SAP 商超订单统一管理系统以商超平台订单集中管理为核心,系统支持多平台、多店铺、全渠道系统采购订单、验收单、结算单等业务单据的统一管理;商超订单统一管理系统支持与 SAP ERP 系统的无缝衔接,在SAP ERP系统中自动生成销售订单、外向交货单,核对验收单、结算单等 SD 模块业务操作,有效的简化企业商超订单管理工作流程,保证订单数据处理的统一、准确、高效,实现跨系统、组织的协同管理,提升企业营销效率。

关于赛锐信息

河南赛锐信息科技有限公司(简称“赛锐信息”)是一家致力于SAP ERP系统应用的服务商,公司立足打造基于AMS产品套件的企业信息化解决方案,结合前沿技术追求最佳用户体验、企业信息化优秀解决方案和企业级产品应用的供应商。公司自主研发的AMS系列软件产品是国内首个用于SAP权限风险识别的增强系统,也是同行业用户精益化管理解决方案中最优的解决方案,作为用户管理、风险规避和信息审计的辅助工具,其有助于规范企业的管理行为,帮助建立合规的管控流程,有效提高企业IT资产投资回报率;AMS系列产品在各项技术指标上拥有完全的、独立的领先优势,可以满足市场竞争、技术许可和标准制定等方面的需要。

作者:SAP权限管理 QQ:2651000673

相关新闻

联系我们

联系我们

130-0752-1773

在线咨询:点击这里给我发消息

邮件:info@sapzx.com

工作时间:周一至周五9:00-18:00,节假日正常休息

关注微信
关注微信
分享本页
返回顶部