ฉันมีสถานการณ์ทางธุรกิจที่ฉันพยายามเลือกข้อมูลในคอลัมน์ตามค่าของคอลัมน์ในอีกคอลัมน์หนึ่ง แล้วจึงแปลงเป็นระเบียนเดียวในภายหลัง
ข้อมูลของฉัน:
MEDIUM MEDIUM_DETAIL VALUE
PHN HOME 7843898789
PHN WORK 8979909890
PHN MOBILE 9899876776
EML PRIMARY [email protected]
EML ALTERNATE [email protected]
ข้อกำหนดคือการแสดง PHN & EML เป็นสองคอลัมน์ตามค่า MEDIUM_DETAIL
หาก MEDIUM = 'EML' ขั้นแรกให้ตรวจสอบ MEDIUM_DETAIL = 'PRIMARY' และใช้ค่าของมัน หากเป็น NULL ให้ทำเครื่องหมาย 'ALTERNATE' ต่อไปและใช้ค่าของมัน หากทั้งสองค่าเป็นโมฆะ ให้พิมพ์ NULL ในคอลัมน์ EML
ใน MEDIUM = 'PHN' ให้ตรวจสอบ MEDIUM_DETAIL = 'HOME' ก่อน หากมีค่าก็ใช้มัน หากเป็นโมฆะ ให้ไปตรวจสอบ 'งาน' และ 'มือถือ' พิมพ์ NULL ถ้าค่าทั้งหมดเป็นโมฆะ
ดังนั้นผลลัพธ์ของฉันตามตัวอย่างข้างต้นควรมีลักษณะดังนี้:
EML PHN
[email protected] 7843898789
ฉันลองใช้ max(decode)...เพื่อย้ายและแม้แต่ PIVOT แต่เทคนิคเหล่านี้จำเป็นต้องมีการรวมกลุ่มและไม่ให้ผลลัพธ์ที่ต้องการ
มีข้อเสนอแนะเกี่ยวกับวิธีการดำเนินการเรื่องนี้หรือไม่?