hana ytd计算

YTD解答方案sql

要求:输出字段: 年月, YTD金额函数

由于我这边只有system一个帐号,就用system帐号写spa

合同表的结构和数据以下:设计

create column table "SYSTEM"."CONTRACTS"3d

       ("CONTRACT_ID" INTEGER null,  --合同IDblog

        "START_DATE" DATE null,  --开始日期io

        "END_DATE" DATE null,           --结束日期table

        "AMOUNT" DECIMAL (18,2) null)     --每个月金额date

      

insert into " SYSTEM "."CONTRACTS" VALUES(1,'2012-04-01', '2013-06-30',100);方法

insert into " SYSTEM "."CONTRACTS" VALUES(2,'2013-07-01', '2015-03-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(3,'2014-02-01', '2015-07-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(4,'2014-05-01', '2016-10-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(5,'2014-07-01', '2015-05-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(6,'2015-01-01', '2016-02-29',100);

insert into " SYSTEM "."CONTRACTS" VALUES(7,'2015-08-01', '2016-09-30',100);

insert into " SYSTEM "."CONTRACTS" VALUES(8,'2014-02-01', '2014-12-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(9,'2015-02-01', '2015-03-30',100);

 

日期表结构, 自行设计. 日期表要具备通用性, 不容许包含任何合同信息.

 

要求:创建一个带参数计算视图, 分别用SQL语句和图形的方式创建.

创建一个存储过程,每月计算YTD,如何计划执行该存储过程。

输入时间参数201406-201506 求YTD

 

从题目的要求中不难看出有如下几个要求:

1. 弄清楚YTD概念(YTDyear to date的缩写)意思是:到如今为止的一年,最近的一年

2.日期表须要自行设计

3.创建计算视图 图形和sql语句两种

4.还须要写一个procedure

5.还须要设置一个过滤器来筛选时间

过程:

首先,我对合同表的时间进行分析 能够联想时间格式设置为YYYYMM 因此我对时间表的设计便可以设置YearMonth YM 可是咱们可能后续还须要对其进行计算 因此在放入两个int型的数据Year_int and Month_int。在日期表中多加入一个伪列JOIN做为join 在后续的方法中链接。设计完毕后,添加数据。

首先争对合同表与日期表进行建立与加入数据(下图为表位置与表结构)

 

 

接下来建立合同表的计算视图,为了将日期格式都设置为YYYYMM格式 因此咱们能够用一些函数记性设计

我要为合同表添加一下几个字段来方便计算运用,起始时间START_TIMEvarchar类型,格式为‘yyyyMM’)、结束时间END_TIMEvarchar类型,格式为‘yyyyMM’)、与日期表JOIN字段列(integer类型,格式为‘1’)、开始年、开始月、结束年、结束月(统为integer类型)

以下图:

 

 

最后就是进行YTD的计算了,由于在分析模型中 咱们对合同表也插入了一行伪列 JOIN因此咱们能够用join将其链接起来,

而后在里面join_1添加flag字段目的是去掉合同表日期与日期表日期不相关的数据(只有月份大于等于start而且小于等于end才能够经过)。

过滤后 就要进行YTD计算, projection_3里面写了一个YTD计算(YEARMONTH小于等于END_TIME的时候 跳转到 另外一个if 若是YEAR_INT=START_YEAR_INT 则表明同年 直接MONTH_INT-START_MONTH_INT便可 若是不是则表明不一样年 因此用MONTH_INT便可)

最后在Semantics中设置维度和度量 以及对YEARMONTH添加过滤器

这样图形建立计算视图就解决了

 

接下来sql语句建立计算视图,首先须要添加如下几个计算列,START_TIME END_TIMEYAERMONTHS ,计算方法按照YTD计算就能够了

相关文章
相关标签/搜索