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計算就能夠了

相關文章
相關標籤/搜索