关于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里面存的是时间和日期
它分类时不是按天来分的
是按秒来分的
有没什么不用改表结构的办法使得它按天来分
有张表(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里面存的是时间和日期
它分类时不是按天来分的
是按秒来分的
有没什么不用改表结构的办法使得它按天来分
from histroy
group by convert(varchar(10),date,120)
order by sum(value) desc
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
from histroy
group by convert(varchar(10),o_,date,120)
order by sum(value) desc
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
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
from Histroy
group by sum(value),convert(varchar(10),date,120)
order by sum(value) desc用convert(varchar(10),date,120)就行了。