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

交叉表问题....高手帮忙解决一下! HELP!HELP!HELP!HELP!HELP!HELP!HELP!
HELP!HELP!HELP!

    id         表示用户
    visit   表示反问次数  
    goods   表示发生顺序
    mame     表示发生   物品名称

id           visit       goods       name
196 1 1 衣服
196 1 2 裤子
196 1 3 帽子
196 2 1 鞋
196 2 2 袜子
196 2 3 皮带
196 2 4 衣服
566 1 1 钢笔
566 2 1 啤酒
566 3 1 螺丝刀


  变成下表

id           visit       goods1     goods2     goods3     goods4
196 1 衣服 裤子 帽子 NULL
196 2 鞋 袜子 皮带 衣服
566 1 钢笔 NULL NULL NULL
566 2 啤酒 NULL NULL NULL
566 3 螺丝刀 NULL NULL NULL


一般交叉表判断一个字段   group   by   就可以了。但是这个表   要判断唯一性是通过两个字段。
  另外   数据类型转换   也出现问题了。所以   跪球高手指教啊!!!

------解决方案--------------------
或者

--動態
declare @str varchar(1000)
set @str= 'select id,visit '
select @str=@str+ ',min(case when goods= ' ' '+goods+ ' ' ' then name else Null end) as ' ' '+goods+ ' ' ' '
from t group by goods
select @str=@str+ ' from t group by id,visit '
exec(@str)