sql - 将列转置为表格

标签 sql sql-server sql-server-2008

这可能非常简单,但我无法理解它。 SQL 服务器 2008。 我有以下内容:

SELECT userId, accesslevel
FROM accesscontrol.dbo.BADGELINK

我得到的结果是

user id         accesslevel
72                 1
72                 5
72                 9
89                 1
89                 4
91                 9
91                 11

我想要的是

user id       acesslevels
72               1,5,9
89               1,4
91               9,11

有什么想法吗?

最佳答案

在 SQL Server 中你可以做这样的事情吗:

Select B.user_id
    , Stuff(
        (
        Select ',' + B1.AccessLevel
        From AccessControl.dbo.BadgeLink As B1
        Where B1.user_id = B.user_id
        Group By B1.AccessLevel
        For Xml Path('')
        ), 1, 2, '') As AccessLevels
From AccessControl.dbo.BadgeLink As B
Group By B.user_id

关于sql - 将列转置为表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5670095/

相关文章:

sql pivot 行到多列

sql - 防止 MS-SQL 表中的循环引用

sql - 如何使用插入到第一个表的行的标识值更新第二个表

javascript - 如何修复 MS SQL Server 2008R2/2012 和 Javascript 之间的日期差异

sql - SQL中不止一个最大值

MySQL - 自己选择查询顺序

sql - 将单个值从一个表连接到多行表 - Oracle

SQL Server 2005 - 以编程方式导出表(运行 .sql 文件来重建它)

mysql - Distinct,REGEXP应用于MYSQL中的Field和CONCAT_GROUP去除存储过程中的重复单词

c# - Entity Framework 创建与模型中每个类对应的单独数据库