พยายามที่จะลบที่ซ้ำกันออกจำนวนแถวในภาษา sql เซิร์ฟเวอร์อยู่ไหนความแตกต่างคือวันหรือการประมวลผลกลุ่มภาพเบอร์

0

คำถาม

ฉันต้องไปในไดเรคทอรี:

SELECT 
    T1.ID_NUMBER,                                                                    
    T1.INCEPTION_DATE,
    T1.OCCURRENCE,
    T1.TRANSACTION_DATE,
    T1.FILE_LOAD_DATE,
    T1.BATCH_NUM
FROM 
    mastertable T1
INNER JOIN 
    (SELECT 
         ID_NUMBER, INCEPTION_DATE, OCCURRENCE, 
         COUNT(*) AS DUPL_COUNT
     FROM 
         mastertable
     WHERE 
         SOURCE_SYSTEM ='LEGACY'
     GROUP BY 
         ID_NUMBER, INCEPTION_DATE, OCCURRENCE
     HAVING 
         COUNT(*) > 1) t2 ON T2.ID_NUMBER = T1.ID_NUMBER 
                          AND T2.INCEPTION_DATE = T1.INCEPTION_DATE 
                          AND T2.OCCURRENCE= T1.OCCURRENCE
ORDER BY 
    1, 2, 3, 4, 5

ซึ่งเป็นคืนที่ติดตามผล

ID_NUMBER INCEPTION_DATE การเกิดขึ้นอีก TRANSACTION_DATE FILE_LOAD_DATE BATCH_NUM
112897732 2008-09-15 4 2008-07-03 2008-07-0717:57:19 06341
112897732 2008-09-15 4 2008-07-13 2008-07-1803:35:55 06753
828194721 2008-11-11 1 2008-09-06 2008-09-1702:50:เลขที่ 44 97334
828194721 2008-11-11 1 2008-09-23 2008-09-2402:55:27 98331
456457422 2008-09-28 1 2008-12-03 2008-07-1308:08:39 00734
456457422 2008-09-28 1 2008-12-03 2008-07-1813:35:55 00991
999272910 2008-05-07 3 2008-05-03 2008-10-1308:08:38 11432
999272910 2008-05-07 3 2008-05-28 2008-10-1803:35:55 13342
875328642 2008-03-01 3 2008-04-28 2008-01-2308:08:38 74542
875328642 2008-03-01 3 2008-04-30 2008-01-2512:55:11 77536
011028734 2008-07-12 2 2008-12-03 2008-08-0711:57:03 23422
011028734 2008-07-12 2 2008-12-03 2008-08-1117:23:29 25748
018264981 2008-07-09 0 2008-12-03 2008-12-0702:18:12 00432
018264981 2008-07-09 0 2008-12-03 2008-12-1117:เลขที่ 44:19 00773

ที่ก่อนหน้านี้ FILE_LOAD_DATE ของแต่ละ ID_NUMBER หรือน้อยกว่า BATCH_NUM คือบันทึกฉันอยากจะอยากให้เธออยู่นานๆใช่ไหมล่ะ

มันมีทางที่จะเขียนมีการที่จะลบอีกคนบันทึกบางทีอาจจะใช้กับ CTE ROW_NUMBER()?

ฉันหวังว่าสำหรับบางอย่างที่แห้งในกรณีที่การปัญหานี้เกิดขึ้นอีกครั้ง ขอบคุณ!

(ด้วถ้ามันไม่ใช่ปัญหาได้โปรดอธิบายยังไงทางออกที่ทำงาน)

1

คำตอบที่ดีที่สุด

3

คุณสามารถใช้เป็น deletable CTE ที่นี่:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY ID_NUMBER, INCEPTION_DATE, OCCURRENCE
                                 ORDER BY FILE_LOAD_DATE, BATCH_NUM) rn
    FROM mastertable
    WHERE SOURCE_SYSTEM = 'LEGACY'
)

DELETE
FROM cte
WHERE rn > 1;

ที่ตรรกะคือการกำหนดเป็นจำนวนแถวต้องแต่ละกลุ่มของบันทึกมีเหมือนค่าสำหรับ ID_NUMBER, INCEPTION_DATEแล้ว OCCURRENCE. แถวหน้าจำนวณค่าของ 1 จะถูกกำหนดให้กับบันทึกมี earliest FILE_LOAD_DATE. ในคดีขอสองคนหรือมากกว่าบันทึกผูกสำหรับ earliest FILE_LOAD_DATEที่โยง breaker จะถูกตัดสินจากเหตุการณ์โดย earliest BATCH_NUM.

การลบแถลงการณ์จะเป็นทั้งบันทึกขอ ยกเว้น เรื่องนี้ earliest ระวัติ

2021-11-14 00:02:08

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่