,你在你的SQL Server有一個表(編輯:prensently SQL Server 2008中)看起來像這樣的數據庫:按日期或時間順序查看分組記錄。可能是日誌表
Date Id State
=================================
2013-09-12 15:02:41,844 1 OK
2013-09-12 15:02:41,844 2 OK
2013-09-12 15:02:41,844 3 ERROR
2013-09-12 15:02:41,844 4 ERROR
2013-09-12 15:02:41,844 5 ERROR
2013-09-13 15:02:41,844 1 ERROR
2013-09-14 15:02:41,844 1 OK
2013-09-15 15:02:41,844 1 ERROR
2013-09-15 15:02:41,844 2 ERROR
表的purpouse是保存記錄的狀態。我寫了這個表,但現在我無法弄清楚如何查詢它在一個時間序列中的不同狀態的概述。
我期待的結果是這樣的:
2013-09-12 16:00:00 OK 2
2013-09-12 16:00:00 ERROR 3
2013-09-13 16:00:00 OK 1
2013-09-13 16:00:00 ERROR 4
2013-09-14 16:00:00 OK 2
2013-09-14 16:00:00 ERROR 3
2013-09-15 16:00:00 OK 0
2013-09-15 16:00:00 ERROR 5
編輯:我想實現我的目標狀態的一天按一天視圖。哪些對象有錯誤,哪些是可以的。也許車庫會是一個更好的例子,但我會堅持這一點。
- 12日有3個物體有ERROR,2個有OK。
- 13日,一個對象從OK變爲Error。我現在有4個對象處於ERROR狀態,而且一個是OK的。
- 14日我的ID爲1的對象是固定的,我現在有
我想通了一個錯誤狀態恢復到兩個對象都OK>三(發現)如何生成一個序列日期(不使用變量聲明)是這樣的:
;WITH dates
AS (
SELECT CAST('2013-12-17 16:00:00' AS DATETIME) 'date'
UNION ALL
SELECT DATEADD(dd, 1, t.DATE)
FROM dates t
WHERE DATEADD(dd, 1, t.DATE) <= GETDATE()
)
SELECT dates.DATE
FROM dates
,我有一個查詢,做相關分組(我認爲),提供所需的輸出(和點):
Date State Count(state)
=======================
2013-09-12 16:00:00 OK 2
2013-09-12 16:00:00 ERROR 3
2013-09-13 16:00:00 ERROR 1
2013-09-14 16:00:00 OK 1
2013-09-15 16:00:00 ERROR 1
所以問題是,你如何將日期序列與我的分組結果結合起來以達到預期的結果。
我喜歡cte。問題是,它只會返回儘可能多的日期(+/- 1),因爲您的遞歸級別已啓用... –
我不太瞭解您的要求。你想要計算什麼?我的第一個猜測是「報告日期時間之前的24小時的每個州的數值。」但我無法弄清楚如何爲「錯誤」和「2013-09-13」獲得Count = 4。 – Bill
輸出中的列是什麼?例如,我真的看不到'2013-09-13 16:00:00確定1'來自 –