如何用SQL语句将ACCESS多表中的数据显示出来
表1 w_gy字段 CompanyID,aa,bb,cc
表2 w_gy01字段 CompanyID,bb,dd,ee
表3 w_gy02字段 CompanyID,aa,gg,hh
表4 w_gy03字段 CompanyID,ff,gg,ii
表5 w_ky01字段 CompanyID,ee,kk,jj
表6 w_ky02字段 CompanyID,rr,pp,ww我需要的显示结果是CompanyID,aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,rr,pp,ww
如果那列没有数值的话则为NULL 
主要是涉及的字段太多,有600多个,所以希望有方法可以解决不要用手动写的问题。最好是有什么方法自动生成出来,或有简单的语句写法。

解决方案 »

  1.   


    --分拆列值
    --原著:邹建
    --改编:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)  2007-12-16  广东深圳/*
    有表tb, 如下: 
    id          value 
    ----------- ----------- 
    1          aa,bb 
    2          aaa,bbb,ccc 
    */
    --欲按id,分拆value列, 分拆后结果如下: 
    /*
    id          value 
    ----------- -------- 
    1          aa 
    1          bb 
    2          aaa 
    2          bbb 
    2          ccc 
    */
    --1. 旧的解决方法(sql server 2000) 
    select top 8000 id = identity(int, 1, 1) into # from syscolumns a, syscolumns b select A.id, substring(A.[values], B.id, charindex(',', A.[values] + ',', B.id) - B.id) 
    from tb A, # B 
    where substring(',' + A.[values], B.id, 1) = ',' drop table # --2. 新的解决方法(sql server 2005) create table tb(id int,value varchar(30)) 
    insert into tb values(1,'aa,bb') 
    insert into tb values(2,'aaa,bbb,ccc') 
    go 
    select A.id, B.value 
    from( 
        select id, [value] = convert(xml,' <root> <v>' + replace([value], ',', ' </v> <v>') + ' </v> </root>') from tb 
    )A 
    outer apply( 
        select value = N.v.value('.', 'varchar(100)') from A.[value].nodes('/root/v') N(v) 
    )B drop table tb /* 
    id          value 
    ----------- ------------------------------ 
    1          aa 
    1          bb 
    2          aaa 
    2          bbb 
    2          ccc (5 行受影响) 
    */把字段拆分了去掉重复后从新组合
      

  2.   

    您理解错我的意思了,我的AA,BB,CC,DD,那些是列,不是VALUE呢。
      

  3.   

    select a.CompanyID,,aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,rr,pp,ww
    from tb1 a
    inner join tb2 b
    on a. CompanyID=b.CompanyID
    inner join tb3 c
    on a.CompanyID=c.CompanyID

    下面跟上面一样的写法
      

  4.   


    主要是aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,rr,pp,ww
    这些列近600多项,我不想手动一一列出,而且主要是还要将重复的列合并,不同的 列就单独列出
      

  5.   

    select *
    from ((((表1 inner join 表2 on 表1.CompanyID=表2.CompanyID)
    inner join 表3 on 表1.CompanyID=表3.CompanyID)
    inner join 表4 on 表1.CompanyID=表4.CompanyID)
    inner join 表5 on 表1.CompanyID=表5.CompanyID)
    inner join 表6 on 表1.CompanyID=表6.CompanyID