现在我自己建了几个表
行业表T_INDUSTRY
INDUSTRY_ID INDUSTRY_NAME
1 钢铁
2 水泥
3 电解铝
4 造船
5 平板玻璃
…… ……债券持仓表 T_HLD
债券ID 债券名称 发行人 名称 持仓面额
C_ID C_NAME ISSUER_ID ISSUER_NAME INvEST_AMOUNT
1 企业债 100 a a公司 100
2 可转债 101 bb公司 200
发行人行业表 T_COMPANY_INDUSTRY
发行人 行业ID
ISSUER_ID INDUSTRY_ID
100 1
101 2 还有一个理财计划表,一个理财计划里面可以有多个债券现在我要查询出来这种结果
钢铁 水泥 电解铝 造船 平板玻璃 ……
理财计划1 100 XXX XXX
理财计划2 XXX 200
……
纵向的理财计划是动态的LIst ,横向的行业也要动态变化,因为行业也是会更新,怎么用一条sql查询出这种结果?
行业表T_INDUSTRY
INDUSTRY_ID INDUSTRY_NAME
1 钢铁
2 水泥
3 电解铝
4 造船
5 平板玻璃
…… ……债券持仓表 T_HLD
债券ID 债券名称 发行人 名称 持仓面额
C_ID C_NAME ISSUER_ID ISSUER_NAME INvEST_AMOUNT
1 企业债 100 a a公司 100
2 可转债 101 bb公司 200
发行人行业表 T_COMPANY_INDUSTRY
发行人 行业ID
ISSUER_ID INDUSTRY_ID
100 1
101 2 还有一个理财计划表,一个理财计划里面可以有多个债券现在我要查询出来这种结果
钢铁 水泥 电解铝 造船 平板玻璃 ……
理财计划1 100 XXX XXX
理财计划2 XXX 200
……
纵向的理财计划是动态的LIst ,横向的行业也要动态变化,因为行业也是会更新,怎么用一条sql查询出这种结果?
b.ISSUER_ID,
max(case when a.INDUSTRY_NAME='钢铁' then b.INvEST_AMOUNT end ) 钢铁,
max(case when a.INDUSTRY_NAME='水泥' then b.INvEST_AMOUNT end ) 水泥,
max(case when a.INDUSTRY_NAME='电解铝' then b.INvEST_AMOUNT end ) 电解铝,
max(case when a.INDUSTRY_NAME='造船' then b.INvEST_AMOUNT end ) 造船,
max(case when a.INDUSTRY_NAME='平板玻璃' then b.INvEST_AMOUNT end ) 平板玻璃
from T_INDUSTRY a,T_HLD b,T_COMPANY_INDUSTRY c,理财计划表 d
where a.INDUSTRY_ID=c.INDUSTRY_ID
and b.ISSUER_ID=c.ISSUER_ID
and b.C_ID=d.C_ID
group by b.ISSUER_ID;