表结构如下
表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 
谢谢.

解决方案 »

  1.   

    谢谢楼上的提醒,我再描述一下
    如表1
    A
    语文
    数学
    体育
    美术
    A不会增加固定的
    表2
    B         C         D
    张一  语文  体育
    张二   语文  体育
    张三   数学  美术
    张四   语文  美术
    B例会增加  但是 C的值是 语文和数学  D的值是 体育和美术
    要求得到如下的表
    A            体育                美术
    语文     张一,张二        张四
    数学                               张三做表A中前二个值和后二个值的交叉 ,谢谢.
      

  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      张三
    语文     张一,张二 张四
    */