รายคน
SET @startdate = '2022-10-01';SET @enddate = '2025-09-30';SELECT a.an, a.regdate, a.dchdate, CONCAT(p.pname, p.fname, ' ', p.lname) AS pt_name, a.admdate, w.name AS w_name, (SELECT bedno FROM ipt_bed_stat WHERE an = a.an ORDER BY ipt_bed_stat_id DESC LIMIT 1) AS bednoFROM an_stat aLEFT JOIN patient p ON p.hn = a.hnLEFT JOIN ipt i ON i.an = a.anLEFT JOIN ward w ON w.ward = i.wardWHERE a.regdate BETWEEN @startdate AND @enddate
รายเดือน แยก ward
SELECT i.ward AS wardcode, w.name AS wardname, -- FY 2566 (Oct 2022 - Sep 2023) SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 1 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ต.ค. 2022`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 2 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `พ.ย. 2022`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 3 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ธ.ค. 2022`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 4 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ม.ค. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 5 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.พ. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 6 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `มี.ค. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 7 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `เม.ย. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 8 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `พ.ค. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 9 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `มิ.ย. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 10 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.ค. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 11 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ส.ค. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 12 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2023) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.ย. 2023`, -- FY 2024 (Oct 2023 - Sep 2024) SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 1 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ต.ค. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 2 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `พ.ย. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 3 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ธ.ค. 2023`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 4 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ม.ค. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 5 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.พ. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 6 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `มี.ค. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 7 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `เม.ย. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 8 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `พ.ค. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 9 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `มิ.ย. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 10 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.ค. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 11 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ส.ค. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 12 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2024) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.ย. 2024`, -- FY 2568 (Oct 2024 - Sep 2025) SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 1 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ต.ค. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 2 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `พ.ย. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 3 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ธ.ค. 2024`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 4 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ม.ค. 2025`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 5 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.พ. 2025`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 6 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `มี.ค. 2025`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 7 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `เม.ย. 2025`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 8 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `พ.ค. 2025`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 9 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `มิ.ย. 2025`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 10 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.ค. 2025`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 11 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ส.ค. 2025`, SUM(CASE WHEN (MOD(MONTH(i.regdate) - 10 + 12, 12) + 1 = 12 AND (YEAR(i.regdate) + IF(MONTH(i.regdate) >= 10, 1, 0)) = 2025) THEN DATEDIFF(an_stat.dchdate, i.regdate) ELSE 0 END) AS `ก.ย. 2025`, SUM(DATEDIFF(an_stat.dchdate, i.regdate)) AS รวมวันนอนFROM ipt iINNER JOIN an_stat an_stat ON i.an = an_stat.anLEFT JOIN ward w ON i.ward = w.wardWHERE i.regdate BETWEEN '2022-10-01' AND '2025-09-30' AND an_stat.dchdate IS NOT NULLGROUP BY i.ward, w.name, w.bedcountORDER BY i.ward ASC;