创建具有1年期间的公共时间段的修复表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建具有1年期间的公共时间段的修复表相关的知识,希望对你有一定的参考价值。

我需要使用SQL查询创建一个具有一年共同时间间隔的表,使用百分比完成变量以及序列号:

S/N     Percentage        Month
1          8%             June
2          17%            July
3          25%            August
...
...
12         100%           May

我想问一下是否有更清洁/有效的方法。

我最初的方法是首先使用递归CTE创建时间间隔和序列号,然后创建下一个百分比属性。

谢谢!

答案

DB2 Z / OS的替代解决方案

SELECT 
rownum "S/N" ,
100*( DAYS(stdt + (rownum-1) MONTH ) -  DAYS(stdt -1 MONTH ) ) /365 "Percentage" ,
VARCHAR_FORMAT(stdt + (rownum-1) MONTH,'Month') "Month"
FROM (
        SELECT ROW_NUMBER() OVER() , DATE('2018-06-01')
        FROM SYSIBM.SYSCOLUMNS 
     ) T(rownum,stdt)
WHERE rownum <=12
另一答案

您可以使用syscat.columns表生成month和row_number()函数来获取百分比

这是查询: -

SELECT  rn "S/N",
        ROUND((rn /count(1) over())*100,0)|| '%' "Percentage",
        my_month "Month" from (
                  -- @startdate '04/01/2017' (MM/DD/YYYY) format
                   SELECT  VARCHAR_FORMAT(DATE(@startdate) + (ROW_NUMBER()OVER() - 1) MONTH,'MON') my_month,
                   ROW_NUMBER()OVER() rn 
                   FROM SYSCAT.COLUMNS where rownum <=12
        )

以上是关于创建具有1年期间的公共时间段的修复表的主要内容,如果未能解决你的问题,请参考以下文章

在android studio中升级repo v9后,片段必须是公共静态类崩溃错误

片段 null 必须是公共静态类才能从实例状态正确重新创建

什么时候应该分支?

从具有 SQLite 中的公共字段的数据库表中选择行

片段必须是公共静态类才能从实例状态正确重新创建

JavaScript笔试题(js高级代码片段)