使用PIVOT和wm_concat 实跟具表数据账期数量的动态表头

本文介绍了如何使用Oracle的PIVOT和wm_concat函数解决动态表头的问题,特别是在处理按月回款统计时。通过将time_cd转到列上,并用wm_count()函数拼接,实现了特定月份、部门和项目回款的详细统计。存储过程分为两步,首先处理wm_count(),然后进行pivot操作,最终形成所需动态表头的结果。
摘要由CSDN通过智能技术生成

pivot 基本语法:pivot(聚合函数 for 列名 in(类型))

wm_concat 基本语法: WM_CONCAT(字段名)

基本需求情况:客户需要在系统中查看某月各项目的回款情况。

之中存在以下问题:每月回款可回前多月的款项。如2019年一月可以回2018年 7月,9月,12月的款。

客户要求可以根据用户回款的月份展示动态表头。以上面的距离是查询2019年1月的回款信息,需要返回的结果7,9,12,分别在三个列上。

原始表结构:

time_cd 为账期,即回款是回的哪个月。up_month 为操作日期(每月数据录入只能在当月内完成)。depart_id 为部门ID。PRO_ID 为项目ID。HS_NUM,BHS_NUM,SHUIE,分别为含税收入,不含税收入,税额。

目标:取UP_MONTH 为固定的某月。该月下的某一个部门下的所有项目各月的回款统计;

实现思路:使用pivot将 time_cd 转到列上,其中 pivot(聚合函数 for 列名 in(类型))  类型部分使用嵌套的方法 用 wm_count()函数拼接time_cd。

代码:

SELECT
to_char(
'

SELEC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值