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

推荐订阅源

Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Y
Y Combinator Blog
T
Tailwind CSS Blog
D
Docker
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Google DeepMind News
Google DeepMind News
腾讯CDC
Vercel News
Vercel News
Engineering at Meta
Engineering at Meta
U
Unit 42
The Cloudflare Blog
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
爱范儿
爱范儿
Recent Announcements
Recent Announcements
博客园 - 聂微东
博客园 - 叶小钗
H
Help Net Security
MyScale Blog
MyScale Blog

博客园 - 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