select max(mob) as maxmob,min(mob) as minmob from table group by convert(varchar(50),gpstime,23)
我这样一个查询出来的却是   maxmob  9.9  minmob 0.2但是其实我select mob from table出来的mob都是400多的值 怎么会这样?

解决方案 »

  1.   

    有按convert(varchar(50),gpstime,23)分组,是先分组再求最大值,
    select max(mob) as maxmob,min(mob) as minmob from table 试试,
    另外,mob的数据类型及给一些实际数据的示例看看
      

  2.   

    convert(varchar(50),gpstime,23)跟没分组一样。另外你确定数据没问题?
      

  3.   

    select max(mob) as maxmob,min(mob) as minmob from table
    最大是9.9,最小是0 但我直接搜索 mob的话数据是有很多的啊  好几百的都有 最大绝对不是9.9
      

  4.   

    mob的数据类型是什么?数值还是字符?字符还涉及一个排序规则的问题?
      

  5.   

    而且我发现一个很奇怪的问题 有一行搜索出来的话   max值是9,min值是12 我晕 怎么可能会这样
      

  6.   

    数据类型是 nvarchar(20)
    数据是 select max(mob) as maxmob,min(mob) as minmob from table搜索出的数据是 max是9.9 min是0
      

  7.   

    select max(cast(mob as decimal(38,2))) as maxmob,
           min(cast(mob as decimal(38,2))) as minmob 
    from table group by convert(varchar(50),gpstime,23)
      

  8.   


    select convert(varchar(10),gpstime,120) as gpstime,
         max(cast(mob as decimal(38,6))) as maxmob,
         min(cast(mob as decimal(38,6))) as minmob 
    from table 
    where isnumeric(mob) = 1
    group by convert(varchar(10),gpstime,120)
      

  9.   

    这个正解,小弟再问下哦,那个这样的话 顺序乱了,怎样排序呢 我order by放哪里,放结尾报错的
      

  10.   

    --加排序select convert(varchar(10),gpstime,120) as gpstime,
         max(cast(mob as decimal(38,6))) as maxmob,
         min(cast(mob as decimal(38,6))) as minmob 
    from table 
    where isnumeric(mob) = 1
    group by convert(varchar(10),gpstime,120)
    order by max(cast(mob as decimal(38,6))) desc