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

请问一个sql 连接多行值的有关问题

2013-09-06 
请教一个sql 连接多行值的问题select f.*,(declare @cols varchar(2000)set @colsSelect @cols + a.po

请教一个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        王五         男     市场部



(3 row(s) affected)
*/


[解决办法]

if object_id('Tempdb..#a') is not null drop table #a
if object_id('Tempdb..#b') is not null drop table #b

create table #a(
[Id] int null,
[Name] nvarchar(100) null,
[Sex] nvarchar(2) null
)

create table #b(
[Id] int null,
[Position] nvarchar(100) null
)

Insert Into #a
select 1001,'张三','男' union all
select 1002,'李四','女' union all
select 1003,'王五','男'  

Insert Into #b
select 1001,'开发部' union all
select 1002,'市场部' union all
select 1001,'人事部' union all
select 1003,'市场部'  


select a.Id,a.name,a.sex, stuff((select  '、'+position  from #b z where b.Id=z.Id for xml path('')), 1, 1, '')  position 
from #b b join #a  a
on a.id=b.id
group by a.Id,a.name,a.sex,b.id
----------------

(3 行受影响)

(4 行受影响)
Id          name                                                                                                 sex  position
----------- ---------------------------------------------------------------- ---- ----------------------------------------------------------------------------------------------------------------
1001        张三                                                                                                   男    开发部、人事部


1002        李四                                                                                                   女    市场部
1003        王五                                                                                                   男    市场部

(3 行受影响)


热点排行