如上图所示,特殊颜色标注的的行即为需要得到的结果,主要是Value值上周发帖得到的最佳答案如下:
select  TimeStamp,value from (
select row_number() over(order by TimeStamp) as row_number, TimeStamp,value from tb
) t 
where t.value<>(select value  from 
(select row_number() over(order by TimeStamp) as row_number, TimeStamp,value from tb) t1
where t1.row_number=t.row_number-1)
上面这条SQL如果是在SQL Server下运行,是可以满足需求的...
但是...
现在需要从实时数据库(Ge Historian 3.5)中取值,虽然实时数据库也支持SQL结构化查询,但是功能上并没有
关系数据库的SQL强大,很多SQL函数都用不了...因此需要一条不应用SQL函数就能得到我所需要的查询结果的SQL语句
对了,好像嵌套表在实时库中也用不了,反正限制听多了,
大侠们看着写了,最好用最平常最平常的SQL,如:
sselect * from XXX where XXX
希望熟悉的大侠帮忙解决了,不胜感激!!

解决方案 »

  1.   

    其实这条SQL就是取中控系统实时数据的设备开关量,但是实时数据是一长串儿的连续值重复值,关系库中只需要取里面的变化节点值就行了,就如图中我标注的结果一样
      

  2.   

    你是要查询出Value连续为0,1的数据吗?
      

  3.   

    连续为0,1,但是像最后一行标注的那样,也得取,假设Value代表机器的开关状态:0为关,1为开
      

  4.   


    select  TimeStamp,value from (
    select rownum as rn, TimeStamp,value from (select TimeStamp,value from tb order by TimeStamp)
    ) t 
    where t.value<>(select value  from 
    (select rownum as rn, TimeStamp,value from (select TimeStamp,value from tb order by TimeStamp)) t1
    where t1.rn=t.rn-1)
      

  5.   

    SQL Server 2005执行结果:
    消息 1033,级别 15,状态 1,第 41 行
    除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。另外:
    select  TimeStamp,value from (
    select rownum as rn, TimeStamp,value from (select TimeStamp,value from tb order by TimeStamp)
    )这种SQL实时数据库查询引擎识别不了,不能嵌套表
    报错:Query error,表不存在
      

  6.   

    select * from (select ROW_NUMBER() over(order by [Date]) rid,* 
    from dbo.test) a
    where [value] <>(
    select [value] from (select [value],ROW_NUMBER() over(order by [Date]) rid 
    from test) b where b.rid = a.rid-1)
      

  7.   

    ID Name TimeStamp Value
    1 Simulation1 2011-5-10 9:35:50 1
    2 Simulation1 2011-5-10 9:35:51 1 结果
    3 Simulation1 2011-5-10 9:35:52 0 结果
    4 Simulation1 2011-5-10 9:35:53 0
    5 Simulation1 2011-5-10 9:35:54 0
    6 Simulation1 2011-5-10 9:35:55 0 结果
    7 Simulation1 2011-5-10 9:35:56 1 结果
    8 Simulation1 2011-5-10 9:35:57 1
    9 Simulation1 2011-5-10 9:35:58 1 结果
    10 Simulation1 2011-5-10 9:35:59 0 结果
    11 Simulation2 2011-5-10 9:36:00 0 结果
    12 Simulation2 2011-5-10 9:36:01 1 结果
    13 Simulation2 2011-5-10 9:36:02 1
    14 Simulation2 2011-5-10 9:36:03 1
    15 Simulation2 2011-5-10 9:36:04 1 结果
    16 Simulation2 2011-5-10 9:36:05 0 结果
    17 Simulation2 2011-5-10 9:36:06 1 结果
    18 Simulation2 2011-5-10 9:36:07 1 结果
    19 Simulation2 2011-5-10 9:36:08 0 结果
    20 Simulation2 2011-5-10 9:36:09 1 结果
    这种取值也行
      

  8.   

    关系型数据库:SQL server 2005实时数据库:GE Proficy Historian 3.5
    这样说吧,我的目的就是取中控系统中设备实时数据的开关量,就是设备的开机时间、关机时间变化点,中控系统取的值就是1或0,还有就是取值的时间点,如果取值频率是1秒的话就是每秒都会有一个实时数据产生,如果设备开着,就会每秒存一个1如果设备关着,就会每秒存一个0..........
    但是实时库中的SQL引擎不像SQL Server中的那么强大,很多功能用不了的,比如,Row_Number()函数