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

高手关于SQL的组合查询

2013-03-06 
高手求助关于SQL的组合查询表结构如下表1 是确定的,不会变化A123456表2会增加,但是C D的列值从表1 A中取例

高手求助关于SQL的组合查询
表结构如下
表1 是确定的,不会变化
A
1
2
3
4
5
6
表2会增加,但是C D的列值从表1 A中取例如
B   C   D
1   1    5
2   1    5
3   2    5
4   2    6
5   3    6
6   3    6

我要得到如下的结果
A    5     6 
1    1,2  
2     3     4
3            5
4             6
说明 表1跟表2组合查询 只统计表1当 A 1 2 3 4 的值 表2的C值的与A中匹配,而D例与A中5 6匹配,
如当表1中A=1时 表2 C=1 取时D=5 打印出B值是1,2 
谢谢.
[解决办法]
看了半天,没看明白,估计没人回答也是因为于此
[解决办法]

-- data
if object_id('tempdb.dbo.#tb') is not null drop table #tb
create table #tb(B varchar(8), C varchar(8), D varchar(8))
insert into #tb
select '张一', '语文', '体育' union all
select '张二', '语文', '体育' union all
select '张三', '数学', '美术' union all
select '张四', '语文', '美术'

-- query
;with comp as
(
select C, D, S = stuff((select ','+B from #tb where C=t.C and D=t.D for xml path('')),1,1,'') from #tb t group by C, D
)
select * from comp t pivot(max(S) for D in (体育,美术)) p
/*
C        体育      美术
-------- --------- ---------
数学     NULL      张三
语文     张一,张二 张四
*/

热点排行