第一个问题你用"交叉表"搜索一下第二个问题你看看这个
http://www.cnblogs.com/goodspeed/archive/2004/09/16/43714.html

解决方案 »

  1.   

    1. select 时间,北京=(select 数据 from 表 where 地名='北京'  and 时间=a.时间),
    天津=(select 数据 from 表 where 地名='天津'  and 时间=a.时间)  from 表 a group by 时间
      

  2.   

    select 时间,北京=( case 地名 when 北京 then 数据 ),天津=( case 地名 when 天津 then 数据 )from 表 a group by 时间
      

  3.   

    我不是楼主,我是来学习的to :Softlee81307(孔)
    小弟佩服,向你学习!!declare @a table(时间 datetime,地名 nvarchar(20),数据 int)
    insert @a(时间,地名,数据)
    values('1990-1-1','北京',85)
    insert @a(时间,地名,数据)
    values('1990-1-2','北京',92)
    insert @a(时间,地名,数据)
    values('1990-1-1','天津',52)
    insert @a(时间,地名,数据)
    values('1990-1-2','天津',98)
    select * from @aselect 时间,北京=(select 数据 from @a where 地名='北京'  and 时间=a.时间),
    天津=(select 数据 from @a where 地名='天津'  and 时间=a.时间)  from @a a group by 时间
      

  4.   

    declare @mystr varchar(8000)
    set @mystr=''
    select @mystr=@mystr + ',min(case 地名 when ''' + 地名 + ''' then 数据 end) ' + 地名  from (select distinct 地名 from a) a
    set @mystr='select 时间' + @mystr + ' from a group by 时间'
    exec(@mystr)