日期:2014-05-17  浏览次数:20512 次

求助SQL语句思路
有两张表,一张是产品表,一张是产品对应的供应商表。
一个产品对应的供应商不确定。

产品表字段            
EDPNO             
 A                  
 B                  
 C 
 
 供应商表字段               
EDPNO             VENDOR
  A              JAPAN
  A              SUZHOU
  A              HANGZHOU
  B              HANGZHOU
  B              SUZHOU
  C              JAPAN

请教各位大虾可以实现这样的结果吗(如果供应商数量超过3个,继续在后面追加)
EDPNO    VENDOR1     VENDOR2    VENDOR3  
 A        JAPAN      SUZHOU     HANGZHOU 
 B        HANGZHOU   SUZHOU
 C        JAPAN
                     

------解决方案--------------------

;with cte(EDPNO,VENDOR) as
(
select 'A','JAPAN'
union all select 'A','SUZHOU'
union all select 'A','HANGZHOU'
union all select 'B','HANGZHOU'
union all select 'B','SUZHOU'
union all select 'C','JAPAN'
)

select a.EDPNO,
stuff((select ', '+VENDOR from cte b 
       where b.EDPNO=a.EDPNO 
       for xml path('')),1,1,'') 'VENDOR'
from cte a
group by  a.EDPNO

/*
EDPNO VENDOR
--------------------------------
A  JAPAN, SUZHOU, HANGZHOU
B  HANGZHOU, SUZHOU
C  JAPAN
*/


这个结果能够接受吗
------解决方案--------------------


if object_id('cte') is not null
drop table cte
go
create table cte
(
EDPNO nvarchar(10),
VENDOR nvarchar(20)

go
insert into cte
select 'A','JAPAN'
union all select 'A','SUZHOU'
union all select 'A','HANGZHOU'
union all select 'B','HANGZHOU'
union&nbs