表内容如下:
 company_id    bank_id    amount
 1001            中行       100.00
 1002            建行       200.00
 1002            建行       300.00
 1001            招行       400.00怎么用一句SQL转化成以下形式呀? company_id   中行 <-bank_id,不固定    建行     招行   。 
    1001     100.00                  0.00     400.00
    1002      0.00                   500.00    0.00银行是不固定的,可能还有其它银行,具体有多少未知,请帮我用一句SQL实现下。

解决方案 »

  1.   


    --总共就那几个银行,都列上就ok了
    SELECT company_id,
           SUM(DECODE(bank_id, '中行', amount,0)) 中行,
           SUM(DECODE(bank_id, '建行', amount,0)) 建行,
           SUM(DECODE(bank_id, '招行', amount,0)) 招行,
           SUM(DECODE(bank_id, '民生', amount,0)) 民生 
      FROM bank
     GROUP BY company_id
     ORDER BY 1; 
      

  2.   

    用case when 和decode都可以
      

  3.   


    这话说得对,亏的是银行,要是饭店,那老鼻子了。如果不想固化的列出所有银行,可以写个过程,读出当前共使用多少个银行,拼接sql列,动态执行sql。
    不值当的