-- ประกาศตัวแปรรับค่าช่วงวันที่
DECLARE @d1 DATETIME = '2026-08-01 00:00:00'; -- ปรับค่าวันที่เริ่มต้น
DECLARE @d2 DATETIME = '2026-08-18 23:59:59'; -- ปรับค่าวันที่สิ้นสุด
DECLARE @sql NVARCHAR(MAX) = N'';
DECLARE @cols NVARCHAR(MAX) = N'';
-- ขั้นตอนที่ 1: ดึงเฉพาะชื่อรายการที่ผ่านเงื่อนไขตามช่วงเวลาและสถานะมาเป็นหัวคอลัมน์
SELECT @sql = @sql + ', MAX(CASE WHEN IREQI_TEXT = ' + QUOTENAME(IREQI_TEXT, '''') + ' THEN IRESI_RESULT_VALUE END) AS ' + QUOTENAME(IREQI_TEXT)
FROM (
SELECT DISTINCT IREQI_TEXT
FROM dbo.view_lab_statistic_Result_List
WHERE REQ_ITEM_CHECKIN_DATETIME BETWEEN @d1 AND @d2
AND REQ_ITEM_INACTIVE = 'N' -- (แทน [ORDER INACTIVE])
AND RES_ITEM_STATE = 'A'
AND REQ_STATE <> 'R'
AND RES_ITEM_INACTIVE = 'N'
AND RES_ITEM_REJECT = 'N'
) AS UniqueItems;
-- ขั้นตอนที่ 2: ประกอบร่างคำสั่ง SQL หลัก พร้อมเงื่อนไขกรองข้อมูล
SET @sql = N'
SELECT
HN,
LN
' + @sql + N'
FROM dbo.view_lab_statistic_Result_List
WHERE REQ_ITEM_CHECKIN_DATETIME BETWEEN @d1 AND @d2
AND REQ_ITEM_INACTIVE = ''N''
AND RES_ITEM_STATE = ''A''
AND REQ_STATE <> ''R''
AND RES_ITEM_INACTIVE = ''N''
AND RES_ITEM_REJECT = ''N''
GROUP BY HN, LN;
';
-- ขั้นตอนที่ 3: สั่งประมวลผล (ใช้ sp_executesql เพื่อส่งผ่านค่าตัวแปรวันที่เข้าไป)
EXEC sp_executesql @sql, N'@d1 DATETIME, @d2 DATETIME', @d1, @d2;
To embed this project on your website, copy the following code and paste it into your website's HTML: