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

请教一个sql 连接多行值的问题
select f.*,(
declare @cols varchar(2000)
set @cols=''
Select @cols += a.powerName + ','  From Web_ContractItemPowerLink t
left join Web_ContractItemPower a on(t.powerId = a.powerId) 
where t.ItemId=f.ItemID
group by ItemId,a.powerName
select @cols) as nName 

from BDM_ITEMINFO f
 


我想根据条件来连接多行值,然后再当成一个字段跟在表后面,好像行不通
求高手赐教
sql

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

create table 表一
(Id int, name varchar(10), SEX varchar(5))

insert into 表一
 select 1001, '张三', '男' union all
 select 1002, '李四', '女' union all
 select 1003, '王五', '男'

create table 表二
(Id int, Position varchar(10))

insert into 表二
 select 1001, '开发部' union all
 select 1002, '市场部' union all
 select 1001, '人事部' union all
 select 1003, '市场部'


select a.Id,a.name,a.SEX,c.Position
  from 表一 a
  inner join  
(select a.Id,
        stuff((select '、'+b.position from 表二 b 
               where b.Id=a.Id for xml path('')),1,1,'') 'Position'
  from 表二 a
  group by a.Id) c on a.Id=c.Id

/*
Id          name       SEX   Position
----------- ---------- ----- -------------------
1001        张三         男     开发部、人事部
1002        李四         女     市场部
1003        王五         男     市场部