2013-04-11 86 views
-6

查询Q返回两列 - DateOfWork这是一个datetimeCallsTakenOnDate这是一个int需要总结查询结果

也就是说,我们得到特定日期某个特定电话交换机所拨打的电话数量。

如何在n天内创建一个函数,该函数将返回特定电话交换机的CallsTakenOnDate列的总和?

表结构 -

DateOfWork | CallsTakenOnDate 
------------------------------- 
2013-10-5 | 200 
2013-10-6 | 100 
2013-10-7 | 700   

我要总结的CallsTakenOnDate

+0

组只;交换 – rahularyansharma 2013-04-11 10:26:24

+0

您可以包括相关表的结构吗? – 2013-04-11 10:26:42

+3

@davidblaine问题是,当你在你的问题中提供了很多细节时,你没有表明你试图写这个函数或查询。这表明你自己完全没有努力来解决这个问题。即使你的尝试很糟糕,你也应该展示你尝试过的东西。 – Taryn 2013-04-11 10:40:17

回答

3

尝试这一个 -

CREATE FUNCTION dbo.udf_getCountCallOnDate 
(
     @DateFrom DATETIME 
    , @DateTo DATETIME 
) 
RETURNS INT 
AS 
BEGIN 

    RETURN (
     SELECT SUM(CallsTakenOnDate) 
     FROM dbo.PhoneCalls 
     WHERE DateOfWork BETWEEN @DateFrom AND @DateTo 
    ) 

END 

SELECT 
    DateOfWork = CONVERT(VARCHAR(10), t.DateOfWork, 111) 
, [Count] = SUM(t.CallsTakenOnDate) 
FROM dbo.PhoneCalls t 
WHERE DateOfWork BETWEEN @DateFrom AND @DateTo 
ORDER BY t.DateOfWork 
0

我只是大同小异的问题今天:

select 
    sum(CallsTakenOnDate) as count, 
    DATE_FORMAT(DateOfWork, "%Y-%m-%d %H:00:00") AS date 
from 
    raw_visits 
group by hour(DateOfWork),day(DateOfWork),month(DateOfWork),year(DateOfWork); 

这组每一天,你也可以通过组声明适应它。

+0

这看起来像MySQL语法,它不适用于SQL Server。 – Taryn 2013-04-11 10:30:18

+0

这确实是mysql,没有看到MSSQL标签。对不起。但通过组的程序应该是相同的... – Nico 2013-04-11 10:35:44