2016-11-21 47 views
0

我有一個查詢是MS-訪問:每日計數從MS-訪問計數器

SELECT FORMAT(MSC_cdr_counters2.[datetime1],"DD/MM/YYYY") AS date1,  MSC_cdr_counters2.[type], sum(MSC_cdr_counters2.[counter]) AS counter 
FROM MSC_cdr_counters2 
WHERE (MSC_cdr_counters2.[datetime1] BETWEEN #10/01/2016# AND #11/01/2016 00:01:00#) 
AND (MSC_cdr_counters2.[type] = "MOC" 
OR MSC_cdr_counters2.[type] = "FORW" 
OR MSC_cdr_counters2.[type] = "SMMO" 
OR MSC_cdr_counters2.[type] = "SOC" 
OR MSC_cdr_counters2.[type] = "PBXO") 
AND MSC_cdr_counters2.[datetime1] LIKE "*2016 0:00:0*" 
GROUP BY MSC_cdr_counters2.[datetime1], MSC_cdr_counters2.[type] ; 

結果(一部分):

date1  type counter 
04.10.2016 FORW 6173453 
04.10.2016 MOC 563216323 
04.10.2016 PBXO 19 
04.10.2016 SMMO 186950644 
04.10.2016 SOC 17377649 
04.10.2016 FORW 43247163 
04.10.2016 MOC 3026671916 
04.10.2016 PBXO 17812373 
04.10.2016 SMMO 704397148 
04.10.2016 SOC 1690090 
05.10.2016 FORW 6173593 
05.10.2016 MOC 563216323 
05.10.2016 PBXO 19 
05.10.2016 SMMO 186950644 
05.10.2016 SOC 17399117 
05.10.2016 FORW 43261775 
05.10.2016 MOC 3027868092 
05.10.2016 PBXO 17812373 
05.10.2016 SMMO 704782312 
05.10.2016 SOC 1694332 
06.10.2016 FORW 6173752 
06.10.2016 MOC 563216323 
06.10.2016 PBXO 19 
06.10.2016 SMMO 186950644 
06.10.2016 SOC 17421247 
06.10.2016 FORW 43276252 
06.10.2016 MOC 3029133560 
06.10.2016 PBXO 17812373 
06.10.2016 SMMO 705187581 
06.10.2016 SOC 1698475 

但我想輸出:

Date  Type Increase in counters per day vs next day 
    4.10.2016 FORW 14752 
    4.10.2016 MOC 1196176 
    4.10.2016 PBXO 0 
    4.10.2016 SMMO 385164 
    4.10.2016 SOC 25710 
    5.10.2016 FORW 14636 
    5.10.2016 MOC 1265468 
    5.10.2016 PBXO 0 
    5.10.2016 SMMO 405269 
    5.10.2016 SOC 26273 
    6.10.2016 FORW 14308 
    6.10.2016 MOC 1237012 
    6.10.2016 PBXO 0 
    6.10.2016 SMMO 390327 
    6.10.2016 SOC 25520 

我一直在谷歌上搜索了很多,但我似乎無法找到一種方法如何查詢每種類型的日常計數(5.10計數器 - 4.10計數器,計數器6.10 - 5.10計數呃等)。我的SQL技能並不好。有人能幫助我嗎?

+0

我不完全確定你在做什麼。您的** MSC_cdr_counters2 **表中有三個字段:** datetime1 **,** type **和** counter **。對於表格中的每個**類型**,您需要按** datetime1 **進行分組的** counter **字段的總和,並顯示當前日期與上一個日期之間的差異?它適用於所有類型,還是僅限於您在'WHERE'子句中使用的類型?所有日期都是代表的,還是週末/銀行假日錯過? –

+0

期間是整整一個月(所以這意味着該月的所有日子)。在查詢中我有:BETWEEN#10/01/2016#和#11/01/2016 00:01:00#。只有那些我在查詢中看到的類型纔有興趣。是的,我希望計數器值按日期加總,並顯示與下一天的計數器相同類型的差異。 – tllskv

回答

0

你如何獲得相同日期和類型的重複行?看起來在同一天必須有兩個不同的時間條目才能給出你得到的結果。你需要邏輯來將它們組合成一個單一的值。我成立了這個查詢要做到這一點,並將其保存爲MSC_CDR_Summary

SELECT Year([DateTime1]) AS Yr, 
    Month([DateTime1]) AS Mn, 
    Day([DateTime1]) as Dy, 
    First(MSC_CDR_Counter2.DateTime1) AS DateTime1, 
    MSC_CDR_Counter2.Type, 
    Sum(MSC_CDR_Counter2.Counter) AS [Counter] 
FROM MSC_CDR_Counter2 
GROUP BY Year([DateTime1]), Month([DateTime1]), MSC_CDR_Counter2.Type 
ORDER BY First(MSC_CDR_Counter2.DateTime1), MSC_CDR_Counter2.Type; 

有了這個總結,我創建了下面給天之間變化:

SELECT MSC_CDR_Summary.DateTime1, 
     MSC_CDR_Summary.Type, 
     MSC_CDR_Summary.Counter, 
     (select first(Counter) from MSC_CDR_Summary T where T.Type=MSC_CDR_Summary.Type and T.DateTime1>MSC_CDR_Summary.DateTime1) AS [Next], 
     [Next]-[Counter] AS Change 
FROM MSC_CDR_Summary; 

這使用子查詢來尋找下一個相同類型的日期並獲得當天的櫃檯。如果更清楚,可以將其作爲單獨的查詢提取出來。

在我看來,你希望從第4天到第5天的變化在第5天報告,但我顯然不知道你的全部要求。