我正在使用LISTAGG與RTRIM和REGEXP_REPLACE創建測試分數的逗號分隔列表,但除去重複項。Oracle SQL - 帶Rtrim和Regexp的Listagg - 重複仍然存在
問題是仍然有重複。
下面給出的數據直接來自SORTEST表格。 (SELECT * FROM SORTEST WHERE SORTEST_PIDM ='260670')我確實消除了我沒有使用的列。
Q1:爲什麼會有重複?
問題二:如何消除它們?
我認爲這可能與兩組A01-A05得分有關。它只發生在擁有多組A分數的人身上。
SELECT DISTINCT
SP.SPRIDEN_ID AS "STUDENT_ID",
t2.sortest_pidm,
SP.SPRIDEN_LAST_NAME AS "LAST",
SP.SPRIDEN_FIRST_NAME AS "FIRST",
RTRIM(
REGEXP_REPLACE(
(
listagg ((T2.SORTEST_TESC_CODE || '-' || T2.SORTEST_TEST_SCORE), ', ')
WITHIN GROUP (ORDER BY SP.SPRIDEN_ID)
OVER (PARTITION BY SP.SPRIDEN_ID)),
'([^-]*)(-\1)+($|-)',
'\1\3'),
'-') TEST
FROM
SPRIDEN SP
left outer join SPBPERS B on SP.spriden_pidm = b.spbpers_pidm
JOIN SORTEST T2 ON T2.SORTEST_PIDM = SP.SPRIDEN_PIDM
WHERE
SP.SPRIDEN_CHANGE_IND IS NULL
AND B.SPBPERS_DEAD_IND IS NULL
AND B.SPBPERS_CONFID_IND <> 'Y'
AND T2.SORTEST_TADM_CODE IS NULL
AND
T2.SORTEST_TESC_CODE IN ('CM1B', 'CM2B', 'CR1B', 'CW1B', 'A01B', 'A02B', 'A03B', 'A04B',
'A05B', 'S01B', 'S02B', 'S95B', 'DSPW', 'DSPR', 'DSPM')
AND sP.spriden_change_ind is null
AND SP.SPRIDEN_ID IN ('A00154876')
數據 請注意,SORTEST_PIDM = SPRIDEN_PIDM:雖然因爲我在尋找得分LIKE '%A'
CODE這是沒有道理給我。我沒有包含SPRIDEN ID或名稱,因爲我想簡化數據部分。
+--------------+-------------------+-------------------+--------------------+ | SORTEST_PIDM | SORTEST_TESC_CODE | SORTEST_TEST_DATE | SORTEST_TEST_SCORE | +--------------+-------------------+-------------------+--------------------+ | | | | | | 260670 | A01 | 1-Mar-12 | 20 | | 260670 | A01 | 1-Oct-12 | 22 | | 260670 | A01B | 9-Jan-13 | 22 | | 260670 | A02 | 1-Mar-12 | 19 | | 260670 | A02 | 1-Oct-12 | 19 | | 260670 | A02B | 5-Jun-12 | 19 | | 260670 | A03 | 1-Mar-12 | 21 | | 260670 | A03 | 1-Oct-12 | 19 | | 260670 | A03B | 5-Jun-12 | 21 | | 260670 | A04 | 1-Mar-12 | 23 | | 260670 | A04 | 1-Oct-12 | 22 | | 260670 | A04B | 5-Jun-12 | 23 | | 260670 | A05 | 1-Mar-12 | 21 | | 260670 | A05 | 1-Oct-12 | 21 | | 260670 | A05B | 5-Jun-12 | 21 | | 260670 | DSPM | 5-Jun-12 | 4 | | 260670 | DSPR | 5-Jun-12 | 4 | | 260670 | DSPW | 5-Jun-12 | 4 | +--------------+-------------------+-------------------+--------------------+
結果:
+------------+--------------+--------+--------+------------------------------------------------+ | STUDENT_ID | SORTEST_PIDM | LAST | FIRST | TEST | +------------+--------------+--------+--------+------------------------------------------------+ | A00154876 | 260670 | Fowler | Martin | A01B-22, A02B-19, A03B-21, A04B-23, A05B-21, | | | | | | DSPM-4, DSPR-4, DSPW-4, | | | | | | A01B-22, A02B-19, A03B-21, A04B-23, A05B-21, | | | | | | DSPM-4, DSPR-4, DSPW-4 | +------------+--------------+--------+--------+------------------------------------------------+
這是我想要的結果:
+------------+--------------+--------+--------+--------------------------------------------+ | STUDENT_ID | SORTEST_PIDM | LAST | FIRST | TEST | +------------+--------------+--------+--------+--------------------------------------------+ | A00249466 | 260670 | Fowler | Martin | A01B-22, A02B-19, A03B-21,A04B-23, A05B-21,| | | | | | DSPM-4, DSPR-4, DSPW-4 | +------------+--------------+--------+--------+--------------------------------------------+
不幸的是,我要離開幾天。如果我不回覆你,那就是爲什麼。謝謝! –