VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 608|回复: 2

SQL表关联问题

[复制链接]

2

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-10 10:20:01 | 显示全部楼层 |阅读模式
表 A
id  name
1   aa
2   bb
3   cc

表 B
id  Aid  value
1   1    aaa
2   1    bbb
3   2    ccc
4   2    ddd
5   2    eee

现要得到如下记录
id  aa   bb   cc
1   aaa  0    0
2   bbb  0    0
3   0    ccc  0
4   0    ddd  0
5   0    eee  0
SQL查询语句能够完成吗,高手指点下,感激不尽~
回复

使用道具 举报

0

主题

8

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-13 13:09:01 | 显示全部楼层
create table A(id int identity(1,1), [name] char(2))
insert A select 'aa'
insert A select 'bb'
insert A select 'cc'

create table B(id int identity(1,1), Aid int, [value] char(3))
insert B select 1,'aaa'
insert B select 1,'bbb'
insert B select 2,'ccc'
insert B select 2,'ddd'
insert B select 2,'eee'

declare @column varchar(8000)
select @column='select id,'

select @column=@column+'case Aid when '+convert(varchar,id)+' then [value] else ''0'' end ['+[name]+'],' from A
set @column=stuff(@column,len(@column),1,'')+' from B '
exec (@column)
/*
id          aa   bb   cc
----------- ---- ---- ----
1           aaa  0    0
2           bbb  0    0
3           0    ccc  0
4           0    ddd  0
5           0    eee  0

*/

drop table A
drop table B
回复

使用道具 举报

2

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-1-13 16:18:01 | 显示全部楼层
谢谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表