2012-07-28 23 views
0

沿着我有一个数据库,并与同日的多个记录及相关金额,但我只想要一个记录,那就是日期相关的总量我有一个数据库,并与同一日期的多个记录及相关金额

No.  Date     name amt 
---- ----------------------- ----- ---- 
4 2012-07-27 10:47:50.000 zerox 15 
5 2012-07-27 12:22:16.000 bag 30 
6 2012-07-28 10:47:50.000 zerox 25 
7 2012-07-28 12:22:16.000 bag 30 

我想这一点:

----------------- 
date   totamt 
---------- ------- 
2012-07-27 45 
2012-07-28 55 
+1

欢迎StackOverflow上。代码格式对可视化很重要。花点时间阅读:http://stackoverflow.com/faq#editing – 2012-07-28 02:40:52

+0

您使用的是哪个**版本的SQL Server? 2000? 2005年? 2008年? 2008 R2? 2012? – 2012-07-28 08:16:48

回答

0

假设你的“日期”一栏的方式没有得到,下面应该工作。

SELECT 
    CAST(date AS DATE), 
    SUM(amt) AS totamt 
FROM TableName 
GROUP BY CAST(date AS DATE) 
+0

你必须先施放日期,否则分组将无法按预期工作 – 2012-07-28 02:39:32

+0

我一旦保存,我就纠正它:)我几乎改正了'日期'字段的转义,但不想再次编辑它。 :) – jtimperley 2012-07-28 02:46:01

+0

这将工作**如果** OP使用SQL Server ** 2008 **或更新版本(因为'DATE'类型是2008版本的新功能) – 2012-07-28 08:16:22

1
select cast([date] as Date) as [Date], 
     sum(amt) TotAmt 
from YourTable 
group by cast([date] as Date) 
+0

这将工作** IF ** OP使用SQL Server ** 2008 **或更新版本(因为'DATE'类型是2008版本中的新功能) – 2012-07-28 08:16:12

0
create table orders(Num int,Date datetime,name varchar(100),amt float) 
INSERT INTO orders 
VALUES(4,'2012-07-27 10:47:50.000','zerox',15), 
(5,'2012-07-27 12:22:16.000','bag', 30), 
(6,'2012-07-28 10:47:50.000','zerox', 25),  
(7,'2012-07-28 12:22:16.000','bag', 30) 

select cast(date as date) date,SUM(amt) sumAmt from orders 
group by cast(date as date) 
+0

这将工作** IF ** OP是使用SQL Server ** 2008 **或更新版本(因为'DATE'类型是2008版本中的新功能) – 2012-07-28 08:16:29

0

嗨尝试这种新的解决方案:

select convert(varchar,date,101) date,SUM(amt) sumAmt from orders 
group by convert(varchar,date,101) 
相关问题