--小明:
select 天气=max(case 列名 when '天气' then 内容 end),
心情=max(case 列名 when '心情' then 内容 end),
时间
from 表a
where 姓名='小明'
group by 时间--小红:
select 天气=max(case 列名 when '天气' then 内容 end),
心情=max(case 列名 when '心情' then 内容 end),
时间
from 表a
where 姓名='小红'
group by 时间

解决方案 »

  1.   

    select 天气=max(case 列名 when '天气' then 内容 end),
    心情=max(case 列名 when '心情' then 内容 end),
    姓名,时间
    from 表a
    where 姓名='小明'
    group by 姓名,时间
      

  2.   

    --全部人
    select 天气=max(case 列名 when '天气' then 内容 end),
    心情=max(case 列名 when '心情' then 内容 end),
    姓名,时间
    from 表a
    group by 姓名,时间
      

  3.   


    --如果要根据人名来做查询,可以写个存储过程
    create proc p_qry
    @姓名 varchar(20)
    as
    set nocount on
    declare @s nvarchar(4000)
    set @s=''
    select @s=@s+quotename(列名)
    +'=max(case 列名 when '+quotename(列名,'''')
    +' then 内容 end),'
    from 表a
    where 姓名=@姓名
    group by 列名
    set @s='select '+@s+'时间 from 表a where 姓名=@姓名 group by 时间'
    exec sp_executesql @s,N'@姓名 varchar(20)',@姓名
    go--调用
    exec p_qry '小红'
      

  4.   

    楼主究竟是要生成新表(create)还是从那张表里查出来啊?
    要生成新表的话,写个存储过程,在里面拼字段,然后执行一下