大家好我需要顯示一些報告,但我沒有解決這個結果。 請幫我指導解決方案以查詢此結果。SQL查詢彙總報告groupby狀態和計算差異時間
這是我的表(登錄)
我需要編寫SQL查詢生成以下結果:
請指引我, 謝謝大家的答案。
大家好我需要顯示一些報告,但我沒有解決這個結果。 請幫我指導解決方案以查詢此結果。SQL查詢彙總報告groupby狀態和計算差異時間
這是我的表(登錄)
我需要編寫SQL查詢生成以下結果:
請指引我, 謝謝大家的答案。
這是一個島嶼和差距問題可以通過使用ROW_NUMBER
解決:
;WITH Cte AS(
SELECT *,
grp = ROW_NUMBER() OVER(PARTITION BY NODE, STATUS ORDER BY DATE_TIME)
- ROW_NUMBER() OVER(PARTITION BY NODE, STATUS, VALUE ORDER BY DATE_TIME)
FROM [Log]
),
CteMinMax AS(
SELECT
NODE,
STATUS,
VALUE,
MIN_DATE_TIME = MIN(DATE_TIME),
MAX_DATE_TIME = MAX(DATE_TIME)
FROM Cte
GROUP BY
NODE, STATUS, VALUE, grp
)
SELECT
NODE,
STATUS,
VALUE,
[Begin Failed] = cmm.MIN_DATE_TIME,
[Last OK] = x.MIN_DATE_TIME,
[Time/Minute] = DATEDIFF(MINUTE, cmm.MIN_DATE_TIME, x.MIN_DATE_TIME)
FROM CteMinMax cmm
CROSS APPLY(
SELECT TOP 1 MIN_DATE_TIME
FROM CteMinMax
WHERE
NODE = cmm.NODE
AND STATUS = cmm.STATUS
AND VALUE = 0
AND MIN_DATE_TIME > cmm.MIN_DATE_TIME
) x
WHERE cmm.VALUE = 1
結果
| NODE | STATUS | VALUE | Begin Failed | Last OK | Time/Minute |
|------|----------------|-------|----------------------------|----------------------------|-------------|
| A | SQL Connection | 1 | December, 02 2015 14:02:00 | December, 02 2015 14:04:00 | 2 |
| A | SQL Connection | 1 | December, 02 2015 14:05:00 | December, 02 2015 14:08:00 | 3 |
| A | SQL Connection | 1 | December, 02 2015 14:12:00 | December, 02 2015 14:15:00 | 3 |
| A | SQL Connection | 1 | December, 02 2015 14:17:00 | December, 02 2015 14:18:00 | 1 |
你能設置一個SQL小提琴? –
我不明白你的結果背後是「失敗」還是「最後確定」!! - 請在您的標籤中選擇MySQL或SQL Server之一。 –
你正在分組什麼?我看到4個相同的行。 –