关于记录整合

lxllamy 2003-05-20 12:16:33
现有两个表:
个人信息表:姓名、编号、社团编号1、社团编号2
社团表:社团编号、社团名称
对应两个表关联如:
姓名 社团名称
lxl 体育协会
lxl 音乐协会

我想把两条记录变成一条:
姓名 社团名称1 社团名称2
lxl 体育协会 音乐协会
用sql语句怎样才能完成
...全文
5 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
psxfghost 2003-05-20
可以是任意多个社团!
^_^
至于名字,稍微改动一下也可以是对应多个人
回复
psxfghost 2003-05-20
create table student
(
姓名 varchar(20),
社团名称 varchar(80)
)
insert into student values('lxl','体育协会')
insert into student values('lxl','音乐协会')
insert into student values('lxl','美术协会')
insert into student values('lxl','科技协会')
insert into student values('lxl','英语协会')

drop table #temp
select '社团名称 ' as 列名,identity(int,1,1) as id,姓名,社团名称 into #temp from student

update #temp set 列名=rtrim(列名)+cast(id as varchar)

declare @sql varchar(4000)
set @sql='select ''lxl'' as 姓名,'

select @sql=@sql+''''+社团名称+'''as '+列名+','
from #temp
set @sql =LEFT(@SQL,LEN (@SQL) -1 )
print @sql
exec(@sql)
drop table student
回复
joygxd 2003-05-20
SELECT a.姓名,
case when exists(a.社团编号1=b.社团编号) then b.社团名称 end as 社团名称1,
case when exists(a.社团编号2=b.社团编号) then b.社团名称 end as 社团名称2,
FROM 个人信息表 a,社团表 b
WHERE a.社团编号1=b.社团编号 AND a.社团编号2=c.社团编号
回复
caiyunxia 2003-05-20
SELECT A.姓名,社团名称1,社团名称2
(SELECT 姓名,MIN(社团名称) 社团名称1 FROM TABLE GROUP BY 社团名称) A
LEFT JOIN
(SELECT 姓名,MAX(社团名称) 社团名称2 FROM TABLE
WHERE 姓名 NOT IN(SELECT 姓名 FROM TABLE GROUP BY 姓名 HAVING COUNT(姓名)=1 ) GROUP BY 社团名称) B
ON A.姓名=B.姓名
以上只能最多两个社团
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-20 12:16
社区公告
暂无公告