SQL Server表合并

再某种特定情况下,我们需要用到表合并的处理,例如将多行数据根据某个字段转换为1行。 这个时候就需要用到stuff这个函数了。

 

 

原表样

SQL Server表合并

 

 合并处理后表样

SQL Server表合并

 

 

原表样代码:

IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[用户角色表]') AND type IN ('U'))
    DROP TABLE [dbo].[用户角色表]
GO

CREATE TABLE [dbo].[用户角色表] (
  [id] nvarchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
  [user] nvarchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
  [role] nvarchar(255) COLLATE Chinese_PRC_CI_AS  NULL
)
GO

ALTER TABLE [dbo].[用户角色表] SET (LOCK_ESCALATION = TABLE)
GO


-- ----------------------------
-- Records of 用户角色表
-- ----------------------------
INSERT INTO [dbo].[用户角色表] ([id], [user], [role]) VALUES (N'1', N'lin', N'A')
GO

INSERT INTO [dbo].[用户角色表] ([id], [user], [role]) VALUES (N'2', N'lin', N'B')
GO

INSERT INTO [dbo].[用户角色表] ([id], [user], [role]) VALUES (N'3', N'lin', N'C')
GO

合并处理代码:

SELECT [USER] 
    , stuff((
        SELECT ',' + role
        FROM 用户角色表
        WHERE [USER] = a.[USER]
        FOR XML path('')
    ), 1, 1, '') role
FROM 用户角色表 a
GROUP BY [USER]

 

上一篇:OB-运行日志


下一篇:数据导入相关的SQL脚本