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 王五 男 市场部