文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQL将多行连接显示

SQL将多行连接显示

时间:2010-10-18  来源:zhuibobo

select * from view_1

select distinct Id,Name, rolekey=

(

    select roleName as [data()] from view_1 where view_1.id =view_1.id for xml path ('')

)

from view_1

原始表 

0000-0000-0000-0001 其他类型? NULL null 1 权限6

0000-0000-0000-0001 其他类型? NULL null 1 权限3

0000-0000-0000-0001 其他类型? NULL null 1 权限5

0000-0000-0000-0001 其他类型? NULL null 1 权限1

0000-0000-0000-0001 其他类型? NULL null 1 权限7

0000-0000-0000-0001 其他类型? NULL null 1 权限2

0000-0000-0000-0001 其他类型? NULL null 1 权限4 

结果表

0000-0000-0000-0001 其他类型? 权限6 权限3 权限5 权限1 权限7 权限2 权限4

 

函数方式

创建函数

USE [Portal]

GO

/****** Object:  UserDefinedFunction [dbo].[ConvertVertToHorz]    Script Date: 10/18/2010 14:34:39 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER FUNCTION [dbo].[ConvertVertToHorz](@Col1Val varchar(50))

RETURNS VARCHAR(8000)

AS

BEGIN

-- 实际项目中,应该考虑 @RetVal 是否会超过 8000 个字符

DECLARE @RetVal varchar(8000)

SET @RetVal = ''

-- 通过递归 SELECT 连接指定列存储到临时变量中

SELECT @RetVal = RoleName + ',' + @RetVal FROM view_1 WHERE id = @Col1Val

-- 连接多列

-- SELECT @RetVal = Column2 + ',' + Column3 + ',' + Column4 + ',' + @RetVal FROM VertToHorzSample WHERE Column1 = @Col1Val

-- 去掉尾巴的 , (逗号)

IF LEN(@RetVal) > 0

SET @RetVal = LEFT(@RetVal, LEN(@RetVal) - 1)

--PRINT @RetVal


RETURN @RetVal

END

 

查询

SELECT distinct Id, dbo.ConvertVertToHorz(Id) rolekey

FROM view_1

 

原始表

0000-0000-0000-0001 其他类型? NULL null 1 权限6

0000-0000-0000-0001 其他类型? NULL null 1 权限3

0000-0000-0000-0001 其他类型? NULL null 1 权限5

0000-0000-0000-0001 其他类型? NULL null 1 权限1

0000-0000-0000-0001 其他类型? NULL null 1 权限7

0000-0000-0000-0001 其他类型? NULL null 1 权限2

0000-0000-0000-0001 其他类型? NULL null 1 权限4 

结果表

0000-0000-0000-0001 权限4,权限2,权限7,权限1,权限5,权限3,权限6 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载