这个最后的结果 和测试项有没有数据,没有关系,只是和你在where中写的条件。上面的max只是对由经过where条件过滤出来的结果,在进行行转列

解决方案 »

  1.   

    由于根据 where (时间 between '2013-5-7 00:09:00' and '2013-5-7 00:09:59')条件 ,能返回结果,所以就算 测试项没有数据,也会有你上面的2行结果集
      

  2.   

    如果真的还有问题,我个人觉得可能的地方是:
    1、字符类型,不过可能性很低:max(case [名称] when '测试项' then [数量] else null end )[测试项]
    2、日期转换,时间列的数据类型和between那些的存在差异,Where (时间 between '2013-5-7 00:09:00' and '2013-5-7 00:09:59')   单纯看代码,应该是不会有结果的
      

  3.   

     if OBJECT_ID('tt2','U') is not null drop table tt2;
     create table tt2(
    时间 datetime,
    名称 varchar(20),
    数量 float
     );
     
     insert into tt2 values('2013-05-07 09:51:11', '电压' ,8.189);
     insert into tt2 values('2013-05-07 09:51:11','电流', 0.000);
     insert into tt2 values('2013-05-07 09:51:11', '功率', 0.000);
     insert into tt2 values('2013-05-07 09:51:15', '电压', 9.189);
     insert into tt2 values('2013-05-07 09:51:15', '电流', 1.000);
     insert into tt2 values('2013-05-07 09:51:15', '功率', 9.000);
     
     select [时间],
           max(case [名称] when '测试项' then [数量] else null end )[测试项]
           From tt2   
           Where (时间 between '2013-05-07 00:09:00' and '2013-05-07 00:09:59')   
           Group By [时间]   
           Order By 时间 Asc