简体   繁体   中英

SQL query summary report groupby status and calculate difference time

Hi all i need show some report, but i don't have solution for this result. Please help me guide solution for Query this result.

This is my table (log)

这是我的桌子(日志)

I need to write SQL query to generate the following results: 我需要编写SQL查询以生成以下结果

Please guide me, Thank you all answers.

This is an Island and Gaps problem which can be solved by using ROW_NUMBER :

SQL Fiddle

;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

RESULT

| 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 |

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM