如果是工作日,取各基金工作日的保有capital,非工作日取上一个工作日的保有,已经有fact_product_capital表包含字段基金名称JJMC,保有capital,日期sk_date ,日期维度表dim_date 包含字段:日期sk_date,工作日标记workday_flag
时间: 2024-03-20 22:45:14 浏览: 79
通信行业客户维护工作计划.doc
好的,你的问题是关于如何根据工作日和非工作日取各基金的保有capital,是吗?
我的理解是,工作日需要取当天的保有capital,而非工作日需要取上一个工作日的保有capital。如果是这样的话,可以按照以下步骤来实现:
1. 首先,需要通过关联fact_product_capital表和dim_date表,得到每个基金在每个日期的保有capital。
2. 接着,需要在dim_date表中增加一个工作日标记workday_flag字段,用来标记每个日期是否为工作日。可以根据具体的国家和地区的法定节假日来确定工作日和非工作日。
3. 然后,可以使用SQL语句来实现根据工作日和非工作日取各基金的保有capital。具体的SQL语句可以如下所示:
```
SELECT
JJMC,
CASE
WHEN workday_flag = 1 THEN capital
ELSE LAG(capital) OVER (PARTITION BY JJMC ORDER BY sk_date)
END AS hold_capital
FROM
fact_product_capital
INNER JOIN dim_date ON fact_product_capital.sk_date = dim_date.sk_date
```
这个SQL语句将根据工作日标记来判断是否取当天的保有capital。如果是工作日,则直接取当天的保有capital;如果是非工作日,则使用LAG函数取上一个工作日的保有capital。
希望这个回答能够解决你的问题,如果有其他问题,欢迎随时提出。
阅读全文