请问如何将多行数据按照商户及年份将数据扩展出来

商户不同账期有不同的费用类型及金额image.png,将费用按商户和年份横向展示12个月费用,费用类型在上金额在下,某个账期没有值的用0补充,效果如下:image.pngimage.png

FineReport 帆软用户xbQPCUvBEq 发布于 2023-9-2 15:16 (编辑于 2023-9-2 15:18)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-9-2 15:58

自己有一个月份表,和一个费用类型无条件关联一下,产生笛卡尔积,做为基础主表,再关联你的业务表即可

这样它会自动出来所有月份和费用类型,没有关系到的就会为0

我用oracel模拟它们无条件关联的。。你是什么数据库,就改成你自己的,用这个得到的结果去关联你的业务表即可!!!

---------------------------

with test1 as  (

select '1月' as 月份 from dual union all

select '2月' as 月份 from dual union all

select '3月' as 月份 from dual union all

select '4月' as 月份 from dual union all

select '5月' as 月份 from dual union all

select '6月' as 月份 from dual union all

select '7月' as 月份 from dual union all

select '8月' as 月份 from dual union all

select '9月' as 月份 from dual union all

select '10月' as 月份 from dual union all

select '11月' as 月份 from dual union all

select '12月' as 月份 from dual

),

test2 as (select '管理费' as feel_type from dual

union all

select '电缆' as feel_type from dual

union all

select '物业费' as feel_type from dual

union all

select '租金' as feel_type from dual

)

select * from test1,

test2

where 1=1

48行数据。因为12*4个费用类型就是笛卡尔积的数据

image.png

  • 帆软用户xbQPCUvBEq 帆软用户xbQPCUvBEq(提问者) 这个费用类型不止这几个,是动态的,你这个写死了不得行
    2023-09-02 17:34 
  • CD20160914 CD20160914 回复 帆软用户xbQPCUvBEq(提问者) 我只是模拟数据。你自己要有一个动态的类型表!,思路的打开!
    2023-09-02 17:38 
最佳回答
0
JerLv3见习互助
发布于2023-9-2 16:17

我觉着你这个可以用行转列的形式去实现,SqlServer 用公式 :PIVOT函数,oracle可用nupivot、PIVOT函数

最佳回答
0
孤陌Lv6资深互助
发布于2023-9-3 16:04(编辑于 2023-9-3 16:33)

你数据就是这样的吗?? 那好做的

image.png

  • 4关注人数
  • 317浏览人数
  • 最后回答于:2023-9-3 16:33
    请选择关闭问题的原因
    确定 取消
    返回顶部