0
我真的不擅长SQL,我只想写一个显示图表中某些日志数据的查询。Transact SQL查询帮助
我有一个SQL Server表,其中我记录了对Web服务的请求。
ID RequestedFunction RequestDateTime
1 'Confirm()' 2010-12-15 13:27:01.234
2 'Register()' 2010-12-16 12:27:00.678
3 'Confirm()' 2010-12-16 21:00:05.456
现在,我想编写返回我每天通过RequestedFunction分组做出的请求数的查询;返回给我一个这样的数据集。
Day ConfirmFunctionRequests RegisterFunctionRequests
15 1 0
16 1 1
这可能吗?所有我能想出到目前为止是这样的,
;WITH CTE AS
(
SELECT id,
[Day] = CAST(day(requestDateTime) AS INT),
RequestedFunction
FROM [Log]
WHERE month(RequestDateTime)=12 AND
year(RequestDateTime)=2010
)
SELECT [Day],COUNT(ID) AS [#Requests] FROM CTE GROUP BY [Day]
它返回每天的请求数,没有不同类型的请求之间的区别。我如何编写一个查询,根据'RequestedFunction'中的值将请求计入两个不同的列中?
非常感谢你来完成!只是想知道,我是否也可以使用DATEPART(dd,RequestDateTime)作为DATEADD(dd,0,DATEDIFF(dd,0,RequestDateTime))的替代方案? – 2010-12-17 12:36:26
唯一的问题是,它只会按天分组,所以如果你有条目在1月15日和2月15日,它会将它们加在一起 – 2010-12-17 12:41:55
是的,我想限制使用WHERE子句,也做小时,每个给定的一天等我尝试使用DATEADD(hh,0,DATEDIFF(hh,0,RequestDateTime))几个小时,但输出似乎不太可读。 – 2010-12-17 13:01:56