SQL Server多结果按ID排成一行(2012版)

考虑以下查询和结果集:

Select udbA.userId, d.dbName
from user_db_access udbA
Inner join dbList d on d.dbid = udbA.dbid 
Order By udbA.userId

1盎司

1 nc_west

1个bsc_mo

1个NS_002

我正在寻找一种将其整理成一个记录的方法。我知道我可以使用临时表并选择它,但是我很好奇查询是否可以直接执行。一个用户最多可以使用15个数据库。

寻找类似下面的结果(2列-userid和数据库名称):

用户名dbname

1 az nc_west bsc_mo NS_002

SQL Server版本:Microsoft SQL Server 2012(SP3)(KB3072779)-11.0.6020.0(X64)2015年10月20日15:36:27版权所有(c)Windows NT 6.3(内部版本9600)上的Microsoft Corporation Enterprise Edition(64位): )(管理程序)

关键错误

假设您要使用空格分隔的数据库名称列表:

DECLARE @Access table ( userId int, dbName varchar(50) );
INSERT INTO @Access VALUES
    ( 1, 'az' ), ( 1, 'nc_west' ), ( 1, 'bsc_mo' ), ( 1, 'NS_002' );

SELECT DISTINCT
    ax.userId, db.list
FROM @Access AS ax
OUTER APPLY (

    SELECT LTRIM ( (
        SELECT ' ' + dbName AS "text()" FROM @Access AS x WHERE x.userId = ax.userId
            FOR XML PATH ( '' )
    ) ) AS list

) AS db;

退货

+--------+--------------------------+
| userId |           list           |
+--------+--------------------------+
|      1 | az nc_west bsc_mo NS_002 |
+--------+--------------------------+

对于以逗号分隔的列表:

SELECT DISTINCT
    ax.userId, db.list
FROM @Access AS ax
OUTER APPLY (

    SELECT STUFF ( (
        SELECT ',' + dbName AS "text()" FROM @Access AS x WHERE x.userId = ax.userId
            FOR XML PATH ( '' )
    ), 1, 1, '' ) AS list

) AS db;

退货

+--------+--------------------------+
| userId |           list           |
+--------+--------------------------+
|      1 | az,nc_west,bsc_mo,NS_002 |
+--------+--------------------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PIVOT表仅在SQL Server中排成一行?

来自分类Dev

在 SQL SERVER 2012 中返回一行的函数 SELECT

来自分类Dev

将同一行中的多个结果行按SQL Server 2008中的一列分组

来自分类Dev

数据按ID排成一行

来自分类Dev

SQL Server:按给定因子多次选择一行

来自分类Dev

SQL 组结果在一行

来自分类Dev

如何计算SQL Server 2012中每一行的百分比?

来自分类Dev

Microsoft SQL Server 2012将完全相邻的两行数据合并为一行

来自分类Dev

SQL Server计算另外一行

来自分类Dev

SQL SERVER PIVOT TABLE一行

来自分类Dev

返回最近的一行 SQL Server

来自分类Dev

SQL Server 2012结果网格

来自分类Dev

SQL Server按查询分组选择每个组的第一行

来自分类Dev

SQL Server CE:如何将两个查询的结果合并为一行?

来自分类Dev

SQL中按主键分组的上一行值

来自分类Dev

按组从前一行sql中减去值

来自分类Dev

一行中多个case语句的SQL结果

来自分类Dev

如何在一行中显示SQL查询结果?

来自分类Dev

从SQL中的结果集中删除一行

来自分类Dev

SQL 从结果中选择某一行

来自分类Dev

如何识别SQL结果中的唯一行值?

来自分类Dev

将ID分配给Microsoft SQL Server视图中的每一行

来自分类Dev

查询以在SQL Server中更改ID后跳过第一行

来自分类Dev

SQL Server:根据上一行/ id中的值计算列值

来自分类Dev

SQL Server:多条记录合并到具有相同ID的同一行

来自分类Dev

如何使用 SQL Server 在一行中检索特定 id 的多条记录

来自分类Dev

如何按组删除除SQL Server中的第一行和最后一行以外的所有行?

来自分类Dev

SQL Server 2012添加具有匹配ID的行的值

来自分类Dev

SQL Server:将行与下一行合并

Related 相关文章

热门标签

归档