现在我自己建了几个表
行业表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查询出这种结果?

解决方案 »

  1.   

    select '理财计划'||rownum 理财计划,
           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;