ใช้งาน Function Row_Number() บน SQL 2005

เขียนบทความแรก ของ ปีนี้เลยครับ พอดีว่า เพิ่ง เจอ โจทย์ มาสดๆ หมาดๆ ครับ เห็นว่าเป็นประโยชน์ดี
เลย นำมา post

ครับ ปัญหาที่เจอ คือ ทำรายงาน โดย นำข้อมูล 2 ตาราง มาแสดงใน รายงานเดียวกัน ฟังดูเหมือนไม่มีอะไร
ข้อมูล มีดังนี้

ตาราง แรก CustomerRisk
CustomerID RiskDate RiskLevel
1 15/1/2009 Level1
1 1/2/2009 Level1
1 15/2/2009 Level2
1 28/2/2009 Level3
2 15/1/2009 Level1
2 1/2/2009 Level1


ตาราง ที่ สอง CustomerProfile

CustomerID
ProfileDate
ProfileDetail
1 15/1/2009 Detail1
1 8/2/2009 Details2
2 5/3/2009 Detail1


จะสังเกตุได้ว่า ตารางทั้ง 2 ตาราง เป็น ตาราง รายละเอียด ของลูกค้า นะครับ
ซึ่ง ลูกค้า 1 คน อาจมี รายละเอียด หลายๆ record โดยที่ ทั้ง 2 ตาราง จะเก็บข้อมูลซึ่ง ไม่เกี่ยวกันเลย
มีความสำพันธ์กัน แค่เพียง Field เดียว คือ CustomerID เท่านั้น ซึ่ง ทั้ง 2 ตารางจะ ไป Link กับ
ข้อมูล ในตาราง Customer อีกครั้ง

ผลลัพธ์ ที่ต้องการคือ ออกรายงาน หน้าตา แบบนี้ ครับ
<-----Table Customer Risk----><----Table Customer Profile---->

CustomerID RiskDate RiskLevel ProfileDate ProfileDetail
1 15/1/2009 Level1 15/1/2009 Detail1
1 1/2/2009 Level1 8/2/2009 Details2
1 15/2/2009 Level2

1 28/2/2009 Level3

2 15/1/2009 Level1 5/3/2009 Detail1
2 1/2/2009 Level1



ธรรมชาติ ของการ ออกรายงาน ด้วย Crystal report เพื่อ Performance แล้ว คือ ต้อง Query
ข้อมูล ที่ต้องการ เป็น Table เดียว แล้วส่งให้ Crystal Report ถึงจะ มีประสิทธิภาพดี

แต่ จากข้อมูล ทั้ง 2 ตาราง ถ้า join กัน จะต้อง มี Key ที่ใช้ Join กัน แต่ เนื่อง จาก 2 ตารางนี้
มี Field ที่มีความสัมพันธ์ กันเพียง Field เดียว คือ CustomerID
ดังนั้น ถ้า Join กันแบบ ธรรมดาด้วย Field CustomerID คุณจะได้ ผลลัพธ์ ในลักษณะ many to many
จะ ไม่ได้คำตอบ ของ โจทย์นี้

ถ้าสังเกตุ ความต้องการ คือ ตารางแรก และ ตาราง ที่ สอง มาวางเรียงกัน
โดย เรียงตาม Customer ID และ Date เรียงตามลำดับ จากน้อยไปมา

ถ้าจะมองให้ดี จะเห็นความสัมพันธ์ ของทั้ง สอง Table คือ ครั้งที่ แต่ Field ครั้ง ที่ไม่มี ใน Table
ต้องสร้างขึ้นเอง ในที่นี้ เนื่องจาก ผมใช้ SQL2005 เป็น Database จึง มี Function Row_number()
ให้ใช้งาน

ส่วน วิธีการใช้ มาดู ตอนต่อไปครับ วันนี้ เอาแค่นี้ก่อน

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ปัญหาเด็ก กลืน ดินน้ำมัน

ปัญหา Custom Paper Size บน Crystal Report

Function Baht Text บน Crystal Report