分组汇总后按指定序列对齐

Oracle数据的temp_data表如下。
TRANSACT_DT_TMLETTER
2023-01-01 00:00:00K
2023-01-02 00:00:00K
2023-01-02 00:00:00L
2023-01-03 00:00:00Q
2024-01-02 00:00:00Y
2024-01-03 00:00:00B
temp_data表的LETTER字段是外键,指向temp_ref表的LETTER字段。temp_ref表的LETTER_SEQ规定了LETTER的顺序。
LETTERLETTER_SEQ
Y10
B20
Q30
K40
L50
要求:对temp_data按照年份和LETTER分组,对记录数计数,再按照年份、LETTER的叉乘对齐,对不上则为null。叉乘时年份按时间顺序排列,LETTER按LETTER_SEQ的顺序排列。
YEARLETTERCNT
2023Y
2023B
2023Q1
2023K2
2023L1
2024Y1
2024B1
2024Q
2024K
2024L

编写SPL代码:

A
1

=orcl.query("select to_char(TRANSACT_DT_TM,'YYYY')

, LETTER,count(1) from temp_data group by to_char(TRANSACT_DT_TM,'YYYY'), LETTER")

2=orcl.query("select LETTER from temp_ref order by LETTER_SEQ")
3=xjoin(A1.id(#1):YEAR;A2:LETTER).join(#1:#2,A1:#1:#2,#3:CNT)

A1、A2:执行简单SQL,对temp_data分组汇总;按顺序取出 LETTER。

A3:先叉乘,再外键式关联 A1。#1 表示第 1 个字段。

开源SPL 源码地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值