日期:2014-05-18  浏览次数:20513 次

sql 实现列变行
A      
    项目名       金额       票号      
    报关费       11                   1      
    报检费       12                   1      
    押箱费       13                   1      
    报关费       11                   2          
    报检费       12                   2      
    押箱费       13                   2      
B
    票号       报关费       报检费       押箱费      
    1                       11                       12                       13      
    2                       14                       15                       16    

由表A查询得B(不用中间表),只用sql能否实现?
另:票号有N个
谢谢

------解决方案--------------------
select
票号,
报关费=sum(case when 项目名= '报关费 ' then 金额 else 0 end),
报检费=sum(case when 项目名= '报检费 ' then 金额 else 0 end),
押箱费=sum(case when 项目名= '押箱费 ' then 金额 else 0 end)
from A group by 票号