关于SQL Server的问题
有张表(Histroy) 表头如下
id int
date datetime //日期时间
value int//价值
productId int//产品ID我想取出value之和最大的一天的日期于是写了如下语句
select top 1 sum(value),date 
from Histroy
group by sum(value),date
order by sum(value) desc
后来才想到date里面存的是时间和日期
它分类时不是按天来分的
是按秒来分的
有没什么不用改表结构的办法使得它按天来分

解决方案 »

  1.   

    select top 1 sum(value) as value,convert(varchar(10),date,120) as date
    from histroy
    group by convert(varchar(10),date,120)
    order by sum(value) desc
      

  2.   


    select top 1 sum(value),convert(varchar(10),date,120) o_date
    from histroy
    group by convert(varchar(10)o_,date,120)
    order by sum(value) desc
      

  3.   

    select top 1 sum(value),convert(varchar(10),date,120) o_date
    from histroy
    group by convert(varchar(10),o_,date,120)
    order by sum(value) desc
      

  4.   


    CREATE TABLE Test
    (
    id int identity,
    value int,
    date datetime
    )INSERT INTO Test VALUES(200,'2009-12-01 18:52:42.593')
    INSERT INTO Test VALUES(50,'2009-12-02 15:52:42.593')
    INSERT INTO Test VALUES(170,'2009-12-02 17:52:42.593')
    INSERT INTO Test VALUES(20,'2009-12-03 11:52:42.593')
    INSERT INTO Test VALUES(120,'2009-12-01 18:50:42.593')
    INSERT INTO Test VALUES(40,'2009-12-02 10:52:42.593')
    INSERT INTO Test VALUES(82,'2009-12-02 07:52:42.593')
    INSERT INTO Test VALUES(20,'2009-12-03 16:52:42.593')
    SELECT TOP 1 SUBSTRING(CONVERT(varchar(200),date),1,10) AS date ,SUM(value) AS value  
    FROM Test
    GROUP BY SUBSTRING(CONVERT(varchar(200),date),1,10)
    ORDER BY SUM(value) DESC
      

  5.   


    CREATE TABLE Test
    (
    id int identity,
    value int,
    date datetime
    )INSERT INTO Test VALUES(200,'2009-12-01 18:52:42.593')
    INSERT INTO Test VALUES(50,'2009-12-02 15:52:42.593')
    INSERT INTO Test VALUES(170,'2009-12-02 17:52:42.593')
    INSERT INTO Test VALUES(20,'2009-12-03 11:52:42.593')
    INSERT INTO Test VALUES(120,'2009-12-01 18:50:42.593')
    INSERT INTO Test VALUES(40,'2009-12-02 10:52:42.593')
    INSERT INTO Test VALUES(82,'2009-12-02 07:52:42.593')
    INSERT INTO Test VALUES(20,'2009-12-03 16:52:42.593')SELECT TOP 1 SUBSTRING(CONVERT(varchar(200),date),1,10) AS date ,SUM(value) AS value  
    FROM Test
    GROUP BY SUBSTRING(CONVERT(varchar(200),date),1,10)
    ORDER BY SUM(value) DESC
      

  6.   

    select top 1 sum(value),convert(varchar(10),date,120) 
    from Histroy
    group by sum(value),convert(varchar(10),date,120)
    order by sum(value) desc用convert(varchar(10),date,120)就行了。