SQL Server2005合并字段相同的项的实例应用

原创 2011年11月05日 15:59:36
 

if object_id('tempdb.dbo.#tb') is not null drop table #tb
go
create table #tb (id int identity(1,1),code varchar(2),name varchar(4),phone int)
insert into #tb
select 'aa','张三',132000000 union all
select 'aa','李四',133000000 union all
select 'bb','王五',122000000 union all
select 'bb','照六',144000000 union all
select 'bb','无七',155000000

select *,n=(select count(*) from #tb where code=t.code and id<=t.id)
into #t
from #tb t

select code,
  name1=max(case when n=1 then name end),
  phone1=max(case when n=1 then phone end),
  name2=max(case when n=2 then name end),  
  phone2=max(case when n=2 then phone end) 
from #t  
group by code 

如:实例(下面的实例是我在公司里做OA系统时候应用的)现在我把他收集起来已是可以供大家参考二是自己代码的经验总结

create proc proc_AllCustom
as
begin
select *,n=(select count(*) from CustState where custId=t.custId and cid<=t.cid)
into #t from CustState t --1
create table #Sates(
kid int,
b1 nvarchar(20),c1 int,a1 nvarchar(20),time1 datetime,
b2 nvarchar(20),c2 int,a2 nvarchar(20),time2 datetime,
b3 nvarchar(20),c3 int,a3 nvarchar(20),time3 datetime,
b4 nvarchar(20),c4 int,a4 nvarchar(20),time4 datetime,
b5 nvarchar(20),c5 int,a5 nvarchar(20),time5 datetime
)
insert into #Sates
 select custId, buitype1=max(case when n=1 then buiType end),
  cstate=max(case when n=1 then cstate end),
  account=max(case when n=1 then  account end),
  addtimes=max(case when n=1 then  addtimes end),
  buitype2=max(case when n=2 then buiType end),
  cstate=max(case when n=2 then cstate end),
  account=max(case when n=2 then  account end),
  addtimes=max(case when n=2 then  addtimes end),
  buitype3=max(case when n=3 then buiType end),
  cstate=max(case when n=3 then cstate end),
  account=max(case when n=3 then  account end),
  addtimes=max(case when n=3 then  addtimes end),
  buitype4=max(case when n=4 then buiType end),
  cstate=max(case when n=4 then cstate end),
  account=max(case when n=4 then  account end),
  addtimes=max(case when n=4 then  addtimes end),
  buitype5=max(case when n=5 then buiType end),
  cstate=max(case when n=5 then cstate end),
  account=max(case when n=5 then  account end),
  addtimes=max(case when n=5 then  addtimes end)
  from #t  group by custId --查询的数据
select Cid,ComName,AddressInfo,b1,c1,a1,time1,b2,c2,a2,time2,
b3,c3,a3,time3,b4,c4,a4,time4,b5,c5,a5,time5
from #Sates,Company where #Sates.kid=Company.Cid order by Company.addtimes
drop table #t
drop table  #Sates
end

SQL 合并某些字段相同的记录

在数据表t1中存在记录            classname   classnum studentname      latetime register  reas...
  • ITX2000
  • ITX2000
  • 2013年09月13日 09:19
  • 915

根据某一字段值相同合并字符串

一、           字符串合并 表名:test 字段:          id               int          name        nvarch...
  • wwsscc168
  • wwsscc168
  • 2016年03月15日 16:49
  • 1215

合并两个有一个相同字段的DataTable (sql join)

 看http://topic.csdn.net/t/20060814/10/4947511.html 比如table1的字段为:     UserId     Password           T...
  • yamazaki6600
  • yamazaki6600
  • 2010年04月06日 16:32
  • 942

SQL合并 合并id相同的数据

合并id相同的数据
  • Sparkjjk
  • Sparkjjk
  • 2015年05月08日 22:58
  • 982

mysql 相同内容的字段合并为一条的方法

从两个表中内联取出的数据,其中category_name字段有相同内容,想将具有相同内容的字段进行合并,将amount字段进行加法运算,变成下表中的内容 SELECT c.categor...
  • scholar_man
  • scholar_man
  • 2015年06月05日 11:59
  • 4101

SQL]合并一个表里面的的多行数据(如果不重复则合并,如果重复则舍弃)

[SQL]合并一个表里面的的多行数据(如果不重复则合并,如果重复则舍弃) 今天我在CSDN里提的一個問題,非常感謝馬可老大~--------------------------------------...
  • ytbada
  • ytbada
  • 2007年01月09日 21:14
  • 3721

(转载)SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值

(转载)SQL 2005 当我们想将某个字段相同的几行数据合并为一列显示的时候 合并列值 问题描述: 无论是在sql 2000, 还是在 sql 2005 中,都没有提供字...
  • chs_jdmdr
  • chs_jdmdr
  • 2012年04月20日 17:42
  • 5481

sql group by 字段合并

create table tb(id int, value varchar(10)) insert into tb values(1, 'aa') insert into tb values(1,...
  • czh4869623
  • czh4869623
  • 2016年12月06日 23:31
  • 1120

sql中怎样把同一张表中相同字段的内容合并为一条记录(不同字段的那一列每个记录后面加逗号)

一、创建表 create table stuUnion (  sid int identity primary key,  cid int,  id varchar(500) )   ...
  • ljxqsqmoliwei
  • ljxqsqmoliwei
  • 2012年08月27日 17:54
  • 13946

SQL强化:将相同的或连续的时间段合并

问题描述:有一张签到表,需要将连续或相同的时间段合并,即把多条记录查询合并成一条连续的时间段记录。 数据表如下: DROP TABLE IF EXISTS `timesheets`; CREATE T...
  • liyong199012
  • liyong199012
  • 2014年03月06日 15:24
  • 4366
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Server2005合并字段相同的项的实例应用
举报原因:
原因补充:

(最多只允许输入30个字)