fact_product_capital 表有保有capital,日期sk_date,户数zhs,基金名称jjmc,dim_date 表里面有日期sk_date,工作日标志:workday_flag,需要实现,如果是工作日那就取工作日的保有,如果是非工作日,那就取上一个工作日的保有,其中保有表工作日和非工作日都有保有
时间: 2024-03-19 12:46:30 浏览: 24
好的,根据您的需求,可以使用以下 SQL 查询语句,将 `fact_product_capital` 表中的保有 `capital` 与 `dim_date` 表中的工作日标志进行匹配,然后根据匹配结果获取相应的保有资金:
```
SELECT
fpc.JJMC,
COALESCE(fpc.capital, prev_fpc.capital) AS capital,
d.sk_date
FROM
dim_date d
LEFT JOIN fact_product_capital fpc ON d.sk_date = fpc.sk_date AND fpc.workday_flag = 1
LEFT JOIN fact_product_capital prev_fpc ON d.prev_workday_sk_date = prev_fpc.sk_date AND prev_fpc.JJMC = fpc.JJMC
WHERE
d.sk_date BETWEEN '开始日期' AND '结束日期'
```
该查询使用了 `LEFT JOIN` 连接 `dim_date` 和 `fact_product_capital` 表,通过 `sk_date` 字段进行连接。当 `fact_product_capital` 表中相应的 `sk_date` 字段不存在时,使用 `COALESCE` 函数将 `capital` 字段设置为上一个工作日的保有 `capital`,这是通过 `LEFT JOIN` 连接 `fact_product_capital` 表和 `prev_fpc` 表来实现的。最后,使用 `WHERE` 子句来限制日期范围。
请注意,您需要将 `开始日期` 和 `结束日期` 替换为您需要的实际日期。同时,您还需要根据实际情况调整表和字段名称。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)