急求一个SQL查询?不知是否有这种可能SQL语句?感谢
数据表如下:
 字段1 字段2 字段3 字段4 
 a1     523   aa    bb
 a2     34    aa    bb
 a3     34    aa    bb
 a1     24    bb    cc
 a2     74    bb    cc
 a3     856   bb    cc
 a1     532   cc    dd
 a2     36    cc    dd
 a3     34    cc    dd
这个表的记录还有可字段3的dd到字段4的EE,一真向下可以YY到ZZ
能不能用SQL语句查询得么如下结果:
 a1     aa  523   bb    24   cc  532  dd
 a2     aa  34    bb    74   cc  36   dd 
 a3     aa  34    bb    856  cc  34   dd
感谢,

解决方案 »

  1.   

    你可以去查下横表变竖表的那个存储过程,那个东西很早之前就有了,基本思路就是拼SQL,基本思路就是:
    SELECT a.字段1,a.字段2,a.字段3,b.字段1,b.字段2,b.字段3 FROM TABLE a,TABLE b WHERE a.字段1 = b.字段1
    然后那个存储过程所要做的事情就是吧这条SQL语句都拼出来,唯一不满足你要求的就是,他不能去除字段中的重复数据,也就是说,同字段中的冗于是不能去掉的,你需要重新想办法。
      

  2.   

    --建立测试环境
    set nocount on
    create table test(字段1 varchar(20),字段2 varchar(20),字段3 varchar(20),字段4 varchar(20))
    insert into test select 'a1','523','aa','bb'
    insert into test select 'a2','34','aa','bb'
    insert into test select 'a3','34','aa','bb'
    insert into test select 'a1','24','bb','cc'
    insert into test select 'a2','74','bb','cc'
    insert into test select 'a3','856','bb','cc'
    insert into test select 'a1','532','cc','dd'
    insert into test select 'a2','36','cc','dd'
    insert into test select 'a3','34','cc','dd'
    go
    --测试declare @sql varchar(8000)
    set @sql='select 字段1, 'select @sql=@sql+''''+字段3+''',max(case when 字段3='''+字段3+''' then 字段2  else '''' end)['+字段3+'],' 
    from (select distinct 字段3 from test)aset @sql=left(@sql,len(@sql)-1)+' from test group by 字段1'exec (@sql)--删除测试环境
    drop table test
     set nocount off
    /*
    a1 aa 523 bb 24 cc 532
    a2 aa 34 bb 74 cc 36
    a3 aa 34 bb 856 cc 34*/