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 SERVER 2005 中,对两集合中有多少相同元素的检测

总是有C友在网上问这样的问题:有列col1,nvarchar型,值可能为 'abc,erfoi,dfij,dja',有列col2,同型,值可能为'张三,李四,王二麻子',问这两列中有多少“元素”相同。...

sql server 2005导入数据表标识字段的配置

sql server 2005导入数据表标识字段的配置 通过“导出数据”迁移数据库时,如何保留标识字段(自增字段)?下面是详细的图解教程。 使用虚拟主机提供的sql ser...

sql server2005在创建字段的时候选择数据类型的参考

1、当使用非unicode时慎用以下这种查询:              select f from t where f = N'xx'      原因:无法利用到索引,因为数据库会将f先转换...

PowerDesigner中生成SQL SERVER2005字段注释的解决方法

目录(?)[-] enhydraboy的专栏 中的如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本 在经过了N久的痛苦折磨后,终于找到了这...

在SQL Server 2005中设置自动编号字段

问:SQL Server 2005中设计表时和在SQL Server Management Studio Express 中如何得到自动编号字段? 答:具体步骤如下: ①像Access中的自动编号字...

SQL SERVER中 用FOR XML PATH将查询结果以XML输出 然后应用于 sql 合并字段功能介绍

转自:http://database.51cto.com/art/201107/273888_1.htm FOR XML PATH是将查询结果集以XML形式展现,使用它我们可以简化我们查询语句的...

SQL Server 2005 不能通过ip地址访问,服务实例名可以访问

问题:可以通过服务器的实例名访问SQL服务器,但不能IP地址访问.1.netstat -an查看服务端是否打开了14332.是否安装防火墙,先关掉防火墙试试3.测试telnet 127.0.0.1 1...

SQL Server2005游标和递归的使用实例

declare @CompanyID varchar(50),@Year varchar(50),@Department varchar(50),@ShowParentAccount varchar(...

[SQL Server 2005/2008]如何在实例之间传输登录和密码

 http://support.microsoft.com/kb/918992  在本文中,服务器 A 和服务器 B 是不同的服务器。另外,服务器 A 和服务器 B 都在运行 SQL Server 2...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Server2005合并字段相同的项的实例应用
举报原因:
原因补充:

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