热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[求助]sqlserver2005中如何累加字符串。。急?

比如这样:nameorderNo--------------------chenORD1CHENORD2CHENOR
比如这样:
name        orderNo
--------------------
chen        ORD1
CHEN        ORD2
CHEN        ORD3
WANG        ORD4
WANG        ORD5
WANG        ORD6
WANG        ORD7

最后得到结果:
name           order
-----------------------------------
chen           ORD1,ORD2,ORD3
WANG           ORD4,ORD5,ORD6,ORD7

用SQL语句可以做到吗?
谢谢。。。

19 个解决方案

#1


STUFF FOR XML

05

#2


SELECT * FROM(SELECT DISTINCT name FROM tb)A OUTER APPLY( 
        SELECT [orderno]= STUFF(REPLACE(REPLACE( 
            ( 
                SELECT orderno FROM tb N 
                WHERE name = A.name
                FOR XML AUTO 
            ), ' ', ''), 1, 1, '') 
)N 
drop table tb 

#3


if object_id('[T]') is not null drop table [T]
create table [T] (name varchar(4),orderNo varchar(4))
insert into [T]
select 'chen','ORD1' union all
select 'CHEN','ORD2' union all
select 'CHEN','ORD3' union all
select 'WANG','ORD4' union all
select 'WANG','ORD5' union all
select 'WANG','ORD6' union all
select 'WANG','ORD7'


select distinct name,
stuff((select ','+orderNo from T where T.name=t1.name for xml path('')),1,1,'')
from T T1

name 
---- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
chen ORD1,ORD2,ORD3
WANG ORD4,ORD5,ORD6,ORD7

(2 行受影响)

#4


if not object_id('tb') is null
drop table tb
Go
Create table tb([name] nvarchar(4),[orderNo] nvarchar(4))
Insert tb
select N'chen',N'ORD1' union all
select N'CHEN',N'ORD2' union all
select N'CHEN',N'ORD3' union all
select N'WANG',N'ORD4' union all
select N'WANG',N'ORD5' union all
select N'WANG',N'ORD6' union all
select N'WANG',N'ORD7'
Go
Select name,
       orderno=stuff((select ','+name
                      from tb
                      where name=t.name
                      for xml path('')),1,1,'') 
from tb t
group by name
/*
name orderno
---- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
chen chen,CHEN,CHEN
WANG WANG,WANG,WANG,WANG

(2 個資料列受到影響)
*/

#5



select name, [values]=stuff((select ','+orderno from tb t where name=tb.name for xml path('')), 1, 1, '') 
from tb 
group by name 


/*name values
---- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
chen ORD1,ORD2,ORD3
WANG ORD4,ORD5,ORD6,ORD7

(2 行受影响)*/

#6


引用 1 楼 sql77 的回复:
STUFF FOR XML

05

 简洁~

#7


create table #ta(name varchar(20),orderNo varchar(20))
insert #ta select 'chen' ,'ORD1'
insert #ta select 'CHEN' ,'ORD2'
insert #ta select 'CHEN' ,'ORD3'
insert #ta select 'WANG' ,'ORD4'
insert #ta select 'WANG' ,'ORD5'
insert #ta select 'WANG' ,'ORD6'
insert #ta select 'WANG' ,'ORD7'

select name,STUFF((select ','+orderNO from #ta where a.name=name for XML path('')),1,1,'')  as orderNo
from #ta a
group by name
name                 orderNo
-------------------- -------------------------
chen                 ORD1,ORD2,ORD3
WANG                 ORD4,ORD5,ORD6,ORD7

(2 行受影响)

#8


你们这帮流氓。。。。

#9


引用 8 楼 ldslove 的回复:
你们这帮流氓。。。。

#10



use PracticeDB
if object_id('[TB]') is not null 
drop table [TB]
create table [TB](name varchar(5),orderno varchar(5))
insert [TB]
select 'chen', 'ORD1' union all
select 'CHEN', 'ORD2' union all
select 'CHEN', 'ORD3' union all
select 'WANG', 'ORD4' union all
select 'WANG', 'ORD5' union all
select 'WANG', 'ORD6' union all
select 'WANG', 'ORD7'


select name ,stuff((select ','+orderno
from tb
where name=a.name for xml path('')),1,1,'')as [order]
from tb a
group by name

name order
chen ORD1,ORD2,ORD3
WANG ORD4,ORD5,ORD6,ORD7

#11


路过学习

#12


学习中   能否请楼上的说说 
select ','+orderno from tb where name=a.name for xml path('')  中 path('')的意思?

#13


用函数也很好
--测试
if object_id('tb') is not null     drop table tb
Go
Create table tb([name] varchar(4),[orderNo] varchar(4))
Insert tb
select 'che','ORD1' union all
select 'CHE','ORD2' union all
select 'CHE','ORD3' union all
select 'WANG','ORD4' union all
select 'WANG','ORD5' union all
select 'WANG','ORD6' union all
select 'WANG','ORD7'
Go

if object_id('f_str') is not null     drop function f_str
Go 
create function dbo.f_str(@name varchar(4)) returns varchar(80)
as
begin
    declare @str varchar(100)
    set @str = ''
    select @str = @str + ',' + cast(orderNo as varchar) from tb where name = @name
    set @str = right(@str , len(@str) - 1)
    return @str
end
go

--调用函数
select name , orderNo = dbo.f_str(name) from tb group by name

--结果
/*

(所影响的行数为 7 行)

name orderNo                                                                          
---- -------------------------------------------------------------------------------- 
che  ORD1,ORD2,ORD3
WANG ORD4,ORD5,ORD6,ORD7

(所影响的行数为 2 行)
*/

#14


我也是来学习的!看之后很是有用!!!!!!

#15


膜拜+学习

#16


学习中。。。

#17


学习,函数的一千就会,但是XML的学下

#18


引用 13 楼 xys_777 的回复:
用函数也很好

SQL code
--测试
if object_id('tb') is not null     drop table tb
Go
Create table tb([name] varchar(4),[orderNo] varchar(4))
Insert tb
select 'che','ORD1' union all
select 'CHE','ORD2' u……



用函数好像速度上,明显会慢很多。。

#19


...

推荐阅读
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 假设我有一张源表customer_account中有一个字段crm_id_content,字段的内容大概为这种模式<r><uid{F7898717-4954-E123 ... [详细]
  • sqldouble222.22222222如何转换成字符串222.22222222%convertcast都是保留4位小数。 ... [详细]
  • SqlServer分区表概述(转载)
    什么是分区表一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件 ... [详细]
  • vue使用
    关键词: ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 微软平台的软件开发系统中,有着一套自己的约定规则。熟悉.net开发的都会对异常处理不陌生,现阶段的各种编程语言中,都不乏异常处理机制,个中原理也都大同小异。sqlserver在批处 ... [详细]
  • SQLServer2008全套 数据库简介,分离,收缩,快照
    第三课视频笔记:联机丛书的使用附加和分离数据库---收缩数据库--------数据库快照 ... [详细]
  • 这篇文章主要讲解了“SQLServer与Access数据库ASP代码有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深 ... [详细]
  • 转载:http:www.crazycoder.cnDataBaseIndex.html查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设 ... [详细]
author-avatar
feixiang1563122
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有