PURE SQL นะคะด้วย MYSQL ถึงจะเป็น DATABASE อื่นก็คงใช้ได้
ไม่ได้ทำเป็น DYNAMIC SQL ให้นะคะ
============================================================
ใช้ TABLE ชื่อ A1
มี PK FIELD ชื่อ ID
และมี FIELD : P1, P2, P3, ... ,Pn โดยมี data-type และ data-length เหมือนกัน
จะประมาณนี้ค่ะ
หลักการคือ แยกแต่ละ column ออกเป็น table เดี่ยวๆ แต่ยังคง id ไว้เพื่อนำมา dot product
เพื่อหาค่าที่มากที่สุดของแต่ละ field ต่อ 1 record จากนั้นจะแสดงผลค่ามากที่สุด ชื่อ field ที่เก็บค่านั้น
ในแต่ละ record ค่ะ
Code (C#)
SELECT QR_COMP.*
FROM
(
(SELECT id ,'P1' AS `label`, P1 as `value` FROM a1)
UNION
(SELECT id ,'P2' AS `label`, P2 as `value` FROM a1)
UNION
(SELECT id ,'P3' AS `label`, P3 as `value` FROM a1)
) AS QR_COMP ,
(
SELECT id ,MAX(`value`) AS MAX_VALUE
FROM
(
(SELECT id ,'P1' AS `label`, P1 as `value` FROM a1)
UNION
(SELECT id ,'P2' AS `label`, P2 as `value` FROM a1)
UNION
(SELECT id ,'P3' AS `label`, P3 as `value` FROM a1)
) AS QR_INNER
GROUP BY id
) AS QR_MAX
WHERE (QR_COMP.`VALUE` = QR_MAX.MAX_VALUE) AND (QR_COMP.ID = QR_MAX.ID)
ORDER BY id;