sql server 横向变纵向查询,求大神指点

Contro 2016-12-12 04:16:10
数据库内数据如图所示:
想要变成这样
请问怎么弄??
...全文
526 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44520912 2019-10-29
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复

DECLARE @col VARCHAR(max),@sql NVARCHAR(max)
SELECT @col=ISNULL(@col+',[','[')+CONVERT(VARCHAR,userid )+']' FROM table GROUP BY userid --TABLE你的原表
--PRINT @col
SELECT @sql='
SELECT * INTO TT1 FROM TABLE
PIVOT(MAX(score) FOR d IN ('+@col+')) AS P'
PRINT @sql
EXEC(@sql)

SELECT *FROM TT1
UNION
SELECT '总分',SUM(1631),SUM(1615),SUM(1616),SUM(1663)

/全动态的我还没想出来怎么写/
海天一鹰 2016-12-16
  • 打赏
  • 举报
回复
with t(drawid,userid,score) as( select 15,1631,0 union select 15,1615,64 union select 15,1616,0 union select 15,1663,-64 union select 16,1615,0 union select 16,1616,0 union select 16,1631,4 union select 16,1663,-4 ) select drawid,[1631],[1615],[1616],[1663] from t pivot ( sum(score) for userid in ([1631],[1615],[1616],[1663]) ) as a
Contro 2016-12-12
  • 打赏
  • 举报
回复
引用 1 楼 u014272541 的回复:
补充 drawid 是一场游戏的对局id
数据库表中的drawid 是每一场游戏的字段,一场游戏分别对象四个人(userid),这四个人的得分分别是score drawid:15 ——>userid:1631,1615,1616,1663——>0,-64,0,64
Contro 2016-12-12
  • 打赏
  • 举报
回复
数据库表中的drawid 是每一场游戏的字段,一场游戏分别对象四个人(userid),这四个人的得分分别是score drawid:15 ——>userid:1631,1615,1616,1663——>0,-64,0,64
  • 打赏
  • 举报
回复
你下面那个 跟上面那个表上面关系啊 没看懂
Contro 2016-12-12
  • 打赏
  • 举报
回复
补充 drawid 是一场游戏的对局id

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧