我正在处理一个有两个步骤的应用程序。
第一步或多或少完成。我尝试通过第二步解释背景和我的要求。
数据库中的每一行都包含一些信息,如logdate,logfilename,LogType,logMessage等。所以我想要编写SQL,每天总结一个给定的LogType。
这是列:
[LogDate] [datetime] NOT NULL,
[Computer] [varchar](50) NOT NULL,
[Type] [varchar](50) NOT NULL,
[FileName] [varchar](100) NOT NULL,
[LineNo] [int] NOT NULL,
[UserName] [varchar](50) NOT NULL,
[Message] [varchar](max) NOT NULL,
如果我想显示Type = TDBError:
的所有行,我想输出可能是这样的Date Sum
2012-10-01 3
2012-10-02 12
2012-10-03 40
2012-10-05 24
2012-10-06 18
因此,在2012-10-01日期,DB中有3行,其中Type = TDBError。在2012-10-02的日期有12个等。
我应该如何为此编写SQL?
答案 0 :(得分:1)
GROUP BY DATEPART(日期,日期),DATEPART(月份,日期),DATEPART(年份,日期)
答案 1 :(得分:1)
假设SQL Server 2008或更新版本:
SELECT
[Date] = CONVERT(DATE, LogDate),
[Sum] = COUNT(*)
FROM dbo.Log_Table_Name
WHERE [Type] = 'DBError'
GROUP BY CONVERT(DATE, LogDate)
ORDER BY [Date];
答案 2 :(得分:1)
您可以按时间段进行分组
GROUP BY date(log_date), month(log_date), day(log_date)
答案 3 :(得分:1)
Select Cast(FLOOR(CAST(DATE as float)) as DateTime) as Date,COUNT(*) as [SUM]
from Log_Table_Name
Group by Cast(FLOOR(CAST(DATE as float)) as DateTime)
order by Cast(FLOOR(CAST(DATE as float)) as DateTime)