2013-04-11 192 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