SqlServer教程

SQL Server表合并

本文主要是介绍SQL Server表合并,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

 

 

原表样

 

 合并处理后表样

 

 

原表样代码:

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]

 

这篇关于SQL Server表合并的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!