SELECT top 25 id=IDENTITY(int,1,1),* INTO #tmp FROM ReadNow where MeterID = 8 and ReadDate LIKE'%:01:%'order by ReadDate desc
SELECT ReadNumber=ISNULL(ReadNumber-(SELECT TOP 1 ReadNumber FROM #tmp 
                                WHERE id = A.id+1 ORDER BY id DESC),0)
FROM #tmp AS A;
想把计算得到的数保留两位小数 同时还是float格式的 
这个该怎么做
还有 对这个临时表不太了解

解决方案 »

  1.   

    cast(column1 as decimal(18,2))
      

  2.   

    SELECT TOP 25 id=IDENTITY(int, 1, 1),
                  *
    INTO   #tmp
    FROM   ReadNow
    WHERE  MeterID = 8
           AND ReadDate LIKE'%:01:%'
    ORDER  BY ReadDate DESCSELECT ReadNumber=cast(Isnull(ReadNumber - (SELECT TOP 1 ReadNumber
                                           FROM   #tmp
                                           WHERE  id = A.id + 1
                                           ORDER  BY id DESC), 0) as decimal(18,2)
    FROM   #tmp AS A; 
      

  3.   


    我一开始也是这样写的 但是一直无法通过
    老是报错  在关键字 'FROM' 附近有语法错误。
      

  4.   


    SELECT TOP 25 id=IDENTITY(int, 1, 1),
                  *
    INTO   #tmp
    FROM   ReadNow
    WHERE  MeterID = 8
           AND ReadDate LIKE'%:01:%'
    ORDER  BY ReadDate DESCSELECT ReadNumber=cast(Isnull(ReadNumber - (SELECT TOP 1 ReadNumber
                                           FROM   #tmp
                                           WHERE  id = A.id + 1
                                           ORDER  BY id DESC), 0) as decimal(18,2))---这里少加了一个右括号
    FROM   #tmp AS A; 
      

  5.   

    from 前面少半个括号,你自己加上就行。
      

  6.   

    SELECT TOP 25 id=IDENTITY(int, 1, 1),
                  *
    INTO   #tmp
    FROM   ReadNow
    WHERE  MeterID = 8
           AND ReadDate LIKE'%:01:%'
    ORDER  BY ReadDate DESCSELECT ReadNumber=cast(Isnull(ReadNumber - (SELECT TOP 1 ReadNumber
                                           FROM   #tmp
                                           WHERE  id = A.id + 1
                                           ORDER  BY id DESC), 0) as decimal(18,2))---这里少加了一个右括号
    FROM   #tmp AS A; 
    加了还是不对 多了一个括号