原始表:
ID 名称     取值     时间
1  传感器1  20       10:00
2  传感器2  30       10:00
3  传感器1  21       11:00
4  传感器2  29       11:00
5  传感器1  20       12:00
6  传感器2  30       12:00通过查询显示为
 传感器1 传感器2 时间
  20      30      10:00
  21      29      11:00
  20      30      12:00

解决方案 »

  1.   

    数表变横表,sql server还是有办法实现的,但是对于无限制的记录,要横向就不行了
      

  2.   

    select s.value,g.value,s.time from 
    (select value,time from test where name='传感器1')s,
    (select value,time from test where name='传感器2')g
    where s.time=g.time ;
      

  3.   

    要不然分两次查询,一次查询传感器名,然后动态生成SQL,再查询。
      

  4.   

    create table d
    as
    select 1 a,  '传感器1' as b,  20 as c     ,'10:00' as d from dual
    union
    select 2 a,  '传感器2' as b,  30 as c     ,'10:00' as d from dual 
    union
    select 3 a,  '传感器1' as b,  21 as c     ,'11:00' as d from dual 
    union
    select 4 a,  '传感器2' as b,  29 as c     ,'11:00' as d from dual 
    union
    select 5 a,  '传感器1' as b,  20 as c     ,'12:00' as d from dual 
    union
    select 6 a,  '传感器2' as b,  30 as c     ,'12:00' as d from dual select 
    sum(decode(b,'传感器1',c,0)) 传感器1,
    sum(decode(b,'传感器2',c,0)) 传感器2,
    d
    from d
    group by d用的oracle
      

  5.   


    好像用case语句是可以实现的!
      

  6.   

    http://blog.csdn.net/liangpei2008/archive/2009/04/26/4124486.aspx
      

  7.   

    当然要用case语句实现,我是说,如果是无限制增加的记录,你怎样横起来, 这样只有通过程序区组合sql语句,或者通过存储过程去组合sql语句(过程内组合,参照6楼)
      

  8.   

    我使用的数据库是Access,是否可以实现。
    今天较忙,明天测试后,回复大家。
      

  9.   

    可以。
    传感器名只有几个的话,直接SQL,2楼的应该差不多。
    传感器名很多的话。先用SQL查询名称,再用Delphi根据查询到的名称生成SQL。