日期:2014-05-19  浏览次数:20501 次

表自我连接查询,弄不出来了,高手请出招
原表:
字段     A         B         C         D  
行1       a1       b1       c1       d1
行2       a2       b2       c2       d2
行3       a3       b3       c3       d3
行4       a4       b4       c4       d4

我希望连接查询后:

字段     A1         B1         C1         D1         A2         B2         C2         D2         A3         B3         C3         D3
行1       a1         b1         c1         d1         a2         b2         c2         d2         a3         b3         c3         d3

请问如何可以做到?
需要这样查询的原因是,我在一个表的不同行里放了今年去年和前年的数据,而用户的报表却是每行一个企业,在同一行里显示这个企业三年的数据,我只好这么办!

------解决方案--------------------
我觉得表结构可能是这样的

年月 企业 数据
-------------------------
2005 企业1 10
2005 企业2 20
2006 企业1 30
2006 企业2 40
2007 企业1 50
2007 企业2 60


用这样的语句
Select Main.企业 ,
IsNull(Val2005.数据,0) 数据2005,
IsNull(Val2006.数据,0) 数据2006,
IsNull(Val2007.数据,0) 数据2007
from
(Select Distinct 企业 From 表) As Main
Left Join
(Select 企业,数据 From 表 where 日期= '2005 ' ) As Val2005 On Main.企业 = Val2005.企业
Left Join
(Select 企业,数据 From 表 where 日期= '2006 ' ) As Val2006 On Main.企业 = Val2006.企业
Left Join
(Select 企业,数据 From 表 where 日期= '2006 ' ) As Val2007 On Main.企业 = Val2007.企业

得到结果
企业 数据2005 数据2006 数据2007
------------------------------
企业1 10 30 50
企业2 20 40 60