大牛们,如何合并数据呢?
--测试数据
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