首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

大牛们,怎么合并数据呢

2013-11-14 
大牛们,如何合并数据呢?--测试数据create table #temp(定单编号 nvarchar(20), 产品名称 nvarchar(20),数

大牛们,如何合并数据呢?


--测试数据
create table #temp(定单编号 nvarchar(20), 产品名称 nvarchar(20),数量 nvarchar(20),录入用户名 nvarchar(20))
insert into #temp
select '001','A产品名','10','张三' union all
select '001','B产品名','10','张三' union all
select '001','C产品名','10','张三' union all
select '002','A产品名','20','李四' union all
select '002','c产品名','10','李四' 
--相要的效果
定单编号                 产品名称                 数量                   录入用户名
-------------------- -------------------- -------------------- --------------------
001                  A产品名                 10                   张三
                     B产品名                 10                   
                     C产品名                 10                   
002                  A产品名                 20                   李四
                     c产品名                 10                   

[解决办法]

--测试数据
create table #temp(定单编号 nvarchar(20), 产品名称 nvarchar(20),数量 nvarchar(20),录入用户名 nvarchar(20))
insert into #temp
select '001','A产品名','10','张三' union all
select '001','B产品名','10','张三' union all
select '001','C产品名','10','张三' union all
select '002','A产品名','20','李四' union all
select '002','c产品名','10','李四' 

select 定单编号=case when n1=1 then 定单编号 else '' end,产品名称,数量,
录入用户名=case when n2=1 then 录入用户名 else '' end
from 
(
select *,n1=(select count(*) from #temp b where a.定单编号=b.定单编号 and b.产品名称<=a.产品名称)
   ,n2=(select count(*) from #temp b where a.录入用户名=b.录入用户名 and b.产品名称<=a.产品名称)
from #temp a
)t


定单编号                 产品名称                 数量                   录入用户名
-------------------------------------------------------------------------------------
001A产品名10张三
B产品名10
C产品名10
002A产品名20李四
c产品名10


[解决办法]

create table #tb(定单编号 nvarchar(20), 产品名称 nvarchar(20),数量 nvarchar(20),录入用户名 nvarchar(20))
insert into #tb
select '001','A產品名','10','張三' union all
select '001','B產品名','10','張三' union all
select '001','C產品名','10','張三' union all
select '002','A產品名','20','李四' union all
select '002','c產品名','10','李四'

select 定单编号=case when rn=1 then 定单编号 else '' end,产品名称,数量,        录入用户名=case when rn=1 then 录入用户名 else '' end 
 from  (select rn= ROW_NUMBER() over (partition by [定单编号] order by [产品名称]), * from #tb) new_tb

drop table #tb 

热点排行