คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
ต้องทำแบบ #2 แนะนำครับ
อันนี้เป็น SQL Server คำสั่งน่าจะคล้ายๆกันนะครับ
DECLARE @t TABLE (
DATENM char(8) NOT NULL,
MAC_NAME char(9) NOT NULL,
TIMENM char(5) NOT NULL,
ONSTS char(1) NOT NULL,
WKSTS char(1) NULL
);
WITH num AS (
SELECT TOP 24 ROW_NUMBER() OVER (ORDER BY object_id)-1 R
FROM sys.objects
)
INSERT INTO @t
SELECT '20190318', 'PD-GP-014', CAST(DATEADD(MINUTE, R, CAST('08:11' as time)) as char(5)), 'O', NULL
FROM num;
UPDATE @t SET WKSTS = 'W'
WHERE TIMENM BETWEEN '08:12' AND '08:19'
OR TIMENM BETWEEN '08:27' AND '08:34';
WITH grp AS (
SELECT *,
ROW_NUMBER() OVER (ORDER BY DATENM) -
ROW_NUMBER() OVER (PARTITION BY WKSTS ORDER BY DATENM, WKSTS) GRP
FROM @t
)
SELECT DATENM, MAC_NAME, MIN(TIMENM) as [MINTIME], MAX(TIMENM) as [MAXTIME], ONSTS, WKSTS
FROM grp
GROUP BY DATENM, MAC_NAME, ONSTS, WKSTS, GRP
ORDER BY 3
อันนี้เป็น SQL Server คำสั่งน่าจะคล้ายๆกันนะครับ
DECLARE @t TABLE (
DATENM char(8) NOT NULL,
MAC_NAME char(9) NOT NULL,
TIMENM char(5) NOT NULL,
ONSTS char(1) NOT NULL,
WKSTS char(1) NULL
);
WITH num AS (
SELECT TOP 24 ROW_NUMBER() OVER (ORDER BY object_id)-1 R
FROM sys.objects
)
INSERT INTO @t
SELECT '20190318', 'PD-GP-014', CAST(DATEADD(MINUTE, R, CAST('08:11' as time)) as char(5)), 'O', NULL
FROM num;
UPDATE @t SET WKSTS = 'W'
WHERE TIMENM BETWEEN '08:12' AND '08:19'
OR TIMENM BETWEEN '08:27' AND '08:34';
WITH grp AS (
SELECT *,
ROW_NUMBER() OVER (ORDER BY DATENM) -
ROW_NUMBER() OVER (PARTITION BY WKSTS ORDER BY DATENM, WKSTS) GRP
FROM @t
)
SELECT DATENM, MAC_NAME, MIN(TIMENM) as [MINTIME], MAX(TIMENM) as [MAXTIME], ONSTS, WKSTS
FROM grp
GROUP BY DATENM, MAC_NAME, ONSTS, WKSTS, GRP
ORDER BY 3
แสดงความคิดเห็น
MySQL เพื่อดึงข้อมูลเวลาเริ่มต้นของแต่ละสถานะ
ผมต้องการดึงข้อมูลเวลาของแต่ละกลุ่ม ไม่ทราบว่าต้องทำอย่างไรครับ ผลที่เรียกออกมาอยากให้เป็นตามนี้ครับ
------------------------------------------------------------------------------------------
DATENM | MAC_NAME | MINTIME | MAXTIME | ONSTS | WKSTS
------------------------------------------------------------------------------------------
20190318| PD-GP-014 | 08:11 | 08:11 | O | null
------------------------------------------------------------------------------------------
20190318| PD-GP-014 | 08:12 | 08:19 | O | W
------------------------------------------------------------------------------------------
20190318| PD-GP-014 | 08:21 | 08:26 | O | null
------------------------------------------------------------------------------------------
20190318| PD-GP-014 | 08:27 | 08:34 | O | W
------------------------------------------------------------------------------------------
รบกวนเพื่อนๆ ด้วยนะครับ ขอบคุณมากครับ