请教一个SQL问题
现在有两个表:
1、Category
┏━━━━━━━━━━━━━━┓
┃CategoryID │CateName ┃
┠──────┼───────┨
┃ 1 │类别一 ┃
┠──────┼───────┨
┃ 2 │类别二 ┃
┠──────┼───────┨
┃ 3 │类别三 ┃
┠──────┼───────┨
┃ ...... │...... ┃
┠──────┼───────┨
2、销售历史History
┏━━━━━━━━━━━━━━━┓
┃SID │RID │CategoryID│Amount┃
┠──┼──┼─────┼───┨
┃ 1 │1 │1 │ 5 ┃
┠──┼──┼─────┼───┨
┃ 1 │1 │2 │ 6 ┃
┠──┼──┼─────┼───┨
┃ 1 │1 │3 │ 4 ┃
┠──┼──┼─────┼───┨
┃ 1 │2 │2 │ 6 ┃
┠──┼──┼─────┼───┨
┃... │... │ ... │ ... ┃
┠──┼──┼─────┼───┨
我想通过上面这两个表生成这样一张表
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃SID │RID │Category1Amount │Category2Amount │Category3Amount ┃
┠──┼──┼────────┼────────┼────────┨
┃ 1 │1 │ 5 │ 6 │ 4 ┃
┠──┼──┼────────┼────────┼────────┨
┃ 1 │2 │ 0 │ 6 │ 0 ┃
┠──┼──┼────────┼────────┼────────┨
┃... │... │ ... │ ... │ ┃
┠──┼──┼────────┼────────┼────────┨
请问我该怎么构造SQL语句呢,这个问题我遇到好几次了,怎样的方法才合理呢?小
弟先谢了!!
declare @sql varchar(8000)
set @sql = select SID,RID
select @sql = @sql + ,sum(case CategoryID when +CategoryID+ then Amount else 0 end) as Category+cast(CategoryID as varchar(50))+Amount
from (select CategoryID from Category) as a
select @sql = @sql+ from History group by CategoryID,SID,RID
exec(@sql)
declare @sql varchar(8000)
set @sql = select SID,RID,
SELECT @SQL = @SQL + SUM( CASE CategoryID WHEN +CASE(CATEGORYID AS NVARCHAR(50) ) + THEN Amount else 0 end) as+CateName+-Amount,
from category
select @sql = left(@sql,len(@sql)-1) +
from 销售历史History group by SID,RID
exec (@sql)