orcleSQL怎么写连续月份的维度表

一共12个月,最新月的数据在倒数第4个柱子上。image.png

横坐标的怎么写比较好。

需要的下面的数据格式

年月      月份

202205   5

202206   6

202207   7

202208   8

202209   9

202210   10

202211   11

202212   12

202301    1

202302    2

202303    3

202304    4

以此类推,根据数据库里面的数据,最新月都是在倒数第4个上。

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

按系统来减12个月应该这样的,具体你要从什么时候开始,你把序号修改一下就行了

select t.年月,t.月份 from (

select 

to_char(ADD_MONTHS (SYSDATE,-rownum),'yyyymm') as 年月,

to_char(ADD_MONTHS (SYSDATE,-rownum),'mm') as 月份,

to_char(ADD_MONTHS (SYSDATE,-rownum),'yyyymm')*1 as 排序

 from dual connect by 12>=rownum

) t 

order by t.排序

image.png

最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-2-7 12:41

直接建一个数据表不更方便

最佳回答
0
ln2481Lv5初级互助
发布于2023-2-7 13:32(编辑于 2023-2-7 13:43)

SELECT 

  --当前月显示为倒数第四位置即增加三个月开始递减

 ADD_MONTHS(ADD_MONTHS(TRUNC(SYSDATE,'mm'),3), -LEVEL+1 )   AS 月初,

 LAST_DAY(ADD_MONTHS(ADD_MONTHS(TRUNC(SYSDATE,'mm'),3), -LEVEL+1 ))  AS 月末 , 

 TO_CHAR(ADD_MONTHS(ADD_MONTHS(TRUNC(SYSDATE,'mm'),3), -LEVEL+1 ),'yyyy-mm') AS 年月,

 TO_CHAR(ADD_MONTHS(ADD_MONTHS(TRUNC(SYSDATE,'mm'),3), -LEVEL+1 ),'mm') AS 月份

FROM DUAL 

CONNECT BY LEVEL <= 12 

ORDER BY 1  --排序

image.png

最佳回答
0
NikoLv4见习互助
发布于2023-2-7 13:54

image.png

select 

TO_CHAR(ADD_MONTHS (SYSDATE,-rownum+3),'yyyymm') as 年月,

TO_NUMBER(TO_CHAR(ADD_MONTHS (SYSDATE,-rownum+3),'mm')) as 月份

 from dual connect by 12>=rownum

order by 年月

  • 3关注人数
  • 404浏览人数
  • 最后回答于:2023-2-7 13:54
    请选择关闭问题的原因
    确定 取消
    返回顶部