关于记录整合

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

我想把两条记录变成一条:
姓名 社团名称1 社团名称2
lxl 体育协会 音乐协会
用sql语句怎样才能完成
...全文
30 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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.姓名
以上只能最多两个社团

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧