/* -----------------------------------------------------------
   TEST QUERY: สรุปภาพรวมร้อยละการตรวจซ้ำ (< 90 วัน)
   ใช้สำหรับ: view_lab_statistic_Order_List
   ----------------------------------------------------------- */

SELECT 
    Sub.[รหัสการตรวจ],
    Sub.[ชื่อการตรวจ],
    COUNT(Sub.LN) AS [จำนวนตรวจทั้งหมด],
    SUM(CASE WHEN Sub.Days_Diff BETWEEN 1 AND 89 THEN 1 ELSE 0 END) AS [จำนวนที่ซ้ำ],
    ROUND(
        CAST(SUM(CASE WHEN Sub.Days_Diff BETWEEN 1 AND 89 THEN 1 ELSE 0 END) AS FLOAT) 
        / NULLIF(COUNT(Sub.LN), 0) * 100, 2
    ) AS [ร้อยละการตรวจซ้ำ (%)],
    CASE 
        WHEN (CAST(SUM(CASE WHEN Sub.Days_Diff BETWEEN 1 AND 89 THEN 1 ELSE 0 END) AS FLOAT) / NULLIF(COUNT(Sub.LN), 0) * 100) < 5 
        THEN 'ผ่าน' ELSE 'เกินเป้า' 
    END AS [สถานะ KPI]
FROM (
    SELECT 
        [REQ ITEM CODE] AS [รหัสการตรวจ],
        [REQ ITEM NAME] AS [ชื่อการตรวจ],
        LN,
        DATEDIFF(day, 
            LAG([REQ ITEM CHECKIN DATETIME]) OVER (
                PARTITION BY HN, [REQ ITEM CODE] 
                ORDER BY [REQ ITEM CHECKIN DATETIME]
            ), 
            [REQ ITEM CHECKIN DATETIME]
        ) AS Days_Diff
    FROM view_lab_statistic_Order_List
    WHERE [REQ ITEM CHECKIN DATETIME] BETWEEN '2025-10-01' AND '2026-03-30'
      -- AND [REQ ITEM CODE] = 'CH005' เพื่อทดสอบเฉพาะตัวก่อนได้จ้า
) AS Sub
GROUP BY Sub.[รหัสการตรวจ], Sub.[ชื่อการตรวจ]
ORDER BY [ร้อยละการตรวจซ้ำ (%)] DESC;

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: