如何用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 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多个,所以希望有方法可以解决不要用手动写的问题。最好是有什么方法自动生成出来,或有简单的语句写法。
--分拆列值
--原著:邹建
--改编:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 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 行受影响)
*/把字段拆分了去掉重复后从新组合
from tb1 a
inner join tb2 b
on a. CompanyID=b.CompanyID
inner join tb3 c
on a.CompanyID=c.CompanyID
。
下面跟上面一样的写法
主要是aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,rr,pp,ww
这些列近600多项,我不想手动一一列出,而且主要是还要将重复的列合并,不同的 列就单独列出
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