最大最小平均这些值去Value1  Value2  哪个?

解决方案 »

  1.   

    CE的话不保证T-SQL能完全执行哦,我写个sqlserver的给你,但是不保证CE完全能执行
      

  2.   

    ----------------------------------------------------------------
    -- Author  :DBA_Huangzj(發糞塗牆)
    -- Date    :2014-01-13 13:22:12
    -- Version:
    --      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
    -- Dec 28 2012 20:23:12 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
    --
    ----------------------------------------------------------------
    --> 测试数据:[huang]
    if object_id('[huang]') is not null drop table [huang]
    go 
    create table [huang]([RecordDate] datetime,[Value1] numeric(2,1),[Value2] numeric(2,1))
    insert [huang]
    select '2013-01-10 11:20:30',5.0,6.0 union all
    select '2013-01-10 11:20:32',7.0,8.0 union all
    select '2013-01-11 12:20:30',4.0,3.0 union ALL
    select '2013-01-11 12:20:32',9.0,5.0 union ALLselect '2013-02-11 12:20:32',9.0,5.0 union ALL
    select '2014-01-11 12:20:32',9.0,5.0
    --------------开始查询--------------------------select SUBSTRING(CONVERT(VARCHAR(10),[RecordDate],120),PATINDEX('%-%',CONVERT(VARCHAR(10),[RecordDate],120))+1,2)[月份],MAX([Value1])MaxValue1,MIN([Value1])MinValue1,AVG([Value1])AvgValue
    from [huang]
    WHERE LEFT(CONVERT(VARCHAR(10),[RecordDate],120),4)='2013'
    GROUP BY SUBSTRING(CONVERT(VARCHAR(10),[RecordDate],120),PATINDEX('%-%',CONVERT(VARCHAR(10),[RecordDate],120))+1,2)
    ----------------结果----------------------------
    /* 
    月份   MaxValue1                               MinValue1                               AvgValue
    ---- --------------------------------------- --------------------------------------- ---------------------------------------
    01   9.0                                     4.0                                     6.250000
    02   9.0                                     9.0                                     9.000000
    */
      

  3.   

    如果不行的话,可能就是一些函数比如parindex这些在CE里面没有,思路就是先获取RecordDate的年份,然后where中用这个年份等于你要查询的那个年,然后group by每个月,计算每个月最大、最小、平均,这个在sqlserver有函数直接实现
      

  4.   


    通不过,没用VARCHAR类型,我替换成了里面的NVARCHAR, 但是函数还是没通过,不知道用什么办法实现函数功能,sqlce太坑人了
      

  5.   

    下面三个看看哪个不能执行select CONVERT(VARCHAR(10),[RecordDate],120)
    from [huang]SELECT LEFT(CONVERT(VARCHAR(10),[RecordDate],120),4)
    from huang
    SELECT PATINDEX('%-%',CONVERT(VARCHAR(10),[RecordDate],120))
    FROM huang
      

  6.   

    不好意思,刚才那几个函数是支持的,上面的Left不行。不过我把语句copy过去没通过,我再看看什么问题
      

  7.   

    left不行的话用这个:SELECT SUBSTRING(CONVERT(VARCHAR(10),[RecordDate],120),1,4)
    from huang
      

  8.   

    终于好了,刚才没注意到Where语句后面的LEFT,换成SUBSTRING就OK啦。
    谢谢版主耐心的帮助