SELECT b.datetime,a.usr,a.area,a.code,b.elect,b.water ,max(b.elect) as mae , min(b.water) as miw  FROM D_SCALE a JOIN D_WellData b ON b.datetime BETWEEN a.stime AND a.etime where a.area = b.area and a.code = b.code and a.usr = b. usr 为什么不能求elect字段的最大值和water字段的最小值,为什么呢?怎么修改呢?

解决方案 »

  1.   

    使用聚合函数没使用group by。
      

  2.   

    SELECT b.datetime,a.usr,a.area,a.code,b.elect,b.water ,mae=(select max(b.elect) from b), miw=(select min(b.water) from b)  FROM D_SCALE a JOIN D_WellData b ON b.datetime BETWEEN a.stime AND a.etime where a.area = b.area and a.code = b.code and a.usr = b. usr 
      

  3.   


    SELECT b.datetime,a.usr,a.area,a.code,b.elect,b.water ,max(b.elect) as mae , min(b.water) as miw  FROM D_SCALE a JOIN D_WellData b ON b.datetime BETWEEN a.stime AND a.etime where a.area = b.area and a.code = b.code and a.usr = b. usr 
    group by b.datetime,a.usr,a.area,a.code,b.elect,b.water 
      

  4.   

    SELECT 
     b.[datetime]
    ,a.usr
    ,a.area
    ,a.code
    ,b.elect
    ,b.water 
    ,max(b.elect) as mae 
    , min(b.water) as miw
    FROM D_SCALE a
    JOIN D_WellData b
     ON a.area = b.area and a.code = b.code and a.usr = b. usr and (b.[datetime] BETWEEN a.stime AND a.etime )a
    group by 
     b.[datetime]
    ,a.usr
    ,a.area
    ,a.code
    ,b.elect
    ,b.water 
      

  5.   

    聚合函数经常与select语句的group by子句一起使用,它又一个原则就是select后面的所有列中,没有使用聚合函数的列,必须都出现在group by后面。
      

  6.   

    求elect字段的最大值和water字段的最小值到时得的是一个值,不能可是多行的,所以再加个条件
    如group by b.area=XX  XX给个值,
      

  7.   

    求elect字段的最大值和water字段的最小值到时得的是一个值,不能可是多行的,所以再加个条件
    如group by b.area=XX  XX给个值,
      

  8.   

    求elect字段的最大值和water字段的最小值到时得的是一个值,不能可是多行的,所以再加个条件
    如group by b.area=XX  XX给个值,
      

  9.   

    即使如上面说的加了group by也要关注是否实现了你的真实需求
    group by返回的是按后面字段返回每个聚合的最大或最小值的