惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
量子位
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
V
Visual Studio Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
V
V2EX
The GitHub Blog
The GitHub Blog
博客园_首页
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
博客园 - 叶小钗
F
Fortinet All Blogs
T
Tailwind CSS Blog
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
WordPress大学
WordPress大学
B
Blog
H
Help Net Security

博客园 - zhuibobo

SQL逻辑查询处理中的各个阶段 基于Web用户控件的Portal flex-流程设计器 WebHL(模仿QQ写的Ajax程序)^_^ JavaScript笔记(可以被钉住的层) JavaScript笔记(带动画效果弹出的层) 新手的入门-设计模式二[一块开工厂把~] 新手的入门-设计模式一[玩玩策略吗?] 读取sql2000,sql2005中的表结构[转贴] 代码生成器(Asp.net(C#)) 十五天的假期-11 十五天的假期-9 十五天的假期-10 十五天的假期-8 十五天的假期-7 十五天的假期-5 十五天的假期-6 十五天的假期-4 十五天的假期-3
SQL将多行连接显示
zhuibobo · 2010-10-18 · via 博客园 - zhuibobo

for xml方式

select * from view_1

select distinct Id,Name, rolekey=

(

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

)

from view_1 v

原始表 

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