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个
谢谢
项目名 金额 票号
报关费 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个
谢谢
票号,
报关费=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 票号
sum(case 项目名 when '报关费' then 金额 else 0 end) '报关费',
sum(case 项目名 when '报检费' then 金额 else 0 end) '报检费',
sum(case 项目名 when '押箱费' then 金额 else 0 end) '押箱费',
sum(金额) 合计
from a
group by 票号
报关费=max(case when 项目名='报关费' then 金额 end),
报检费=max(case when 项目名='报检费' then 金额 end),
押箱费=max(case when 项目名='押箱费' then 金额 end)
from A表
group by 票号
set @sql = 'select 票号'
select @sql = @sql + ' , sum(case 项目名 when ''' + 项目名 + ''' then 金额 else 0 end) [' + 项目名 + ']'
from (select distinct 项目名 from a) as t
set @sql = @sql + ',sum(金额) 合计 from a group by 票号'
exec(@sql)