>我有一个数据表,我想按不同日期分组。但是在本专栏中,我还有小时、分钟和秒...... 我确切地想做的是按日期分组并对另一列求和。
例如:
Date DataToSum
2020-05-20 10:29:37.000 5
2020-05-20 11:18:12.010 3
2020-05-20 12:31:56.020 8
2020-05-21 10:19:36.000 4
2020-05-22 09:28:17.000 1
所以结果必须是这样的:
2020-05-20 -> 16
2020-05-21 -> 4
2020-05-22 -> 1
如何使用 SQL 执行此操作?
我正在使用Transact-SQL 和 SQLServer Management Studio Microsoft。
这就是我正在尝试的:
Select distinct convert(varchar, col_Date, 111), Sum(cats) from table1
Group by col_Date
Order by convert(varchar, col_Date, 103) desc
你的代码看起来像SQL Server。 在该数据库中:
select convert(date, col_Date) as dte, Sum(cats)
from table1
group by convert(date, col_Date)
order by convert(date, col_Date) desc;
关键是您需要在group by
中重复表达式。
注意:这会将值转换为date
而不是字符串。 我不建议混合使用字符串和日期函数,除非您要将日期/时间转换为具有特定格式的字符串。
另一种可能使其更整洁并且我还发现对计算/串联列的良好做法的选择是一种Common Table Expression (CTE)
With ExampleCTE AS
(
Select convert(date, col_Date) As dte
, cats
From table1
)
Select dte
, SUM(cats) As SumOfCats
From ExampleCTE
Group By dte
Order By dte Desc;
虽然您的示例很容易遵循,但将来您可能会发现更复杂的场景,CTE
使事情更容易阅读