Как получить уникальные значения для нескольких строк, полученных путем конкатенации - PullRequest
0 голосов
/ 28 марта 2019

Я работаю в Oracle SQL.У меня есть источник и таблица целей.Я должен объединить 2 столбца из исходной таблицы как один столбец для целевой таблицы.Кроме того, потребуются также другие столбцы из исходной таблицы для сопоставления с другими столбцами в целевой таблице.Я использовал функцию concat, но в результате для объединенной комбинации есть несколько записей, но мне требуется только уникальные значения для сопоставления с целевой таблицей.Я пытался использовать разные, но количество строк не совпадает.Disctinct применяется и ко всем другим столбцам.

SELECT DISTINCT (T1.C1||T1.C2) AS T2.C1, T1.C3 AS T2.C2,
                TO_DATE('01/01/1900', 'DD/MM/YYYY') AS T2.C3
FROM TABLE T1
WHERE <some cond..>

SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900
SIPP34  PDG III Lifestyle - Cash    Lifestyle   116 Open    01/01/1900

В моем запросе получено несколько таких строк.первый столбец получается путем объединения двух разных столбцов.Мой фактический результат должен содержать только одну запись этого.Другими словами, можно отдельно применять только один столбец (который получается в результате конкатенации) в операторе выбора.потому что, если я использую DISTINCT (T1.C1 || T1.C2), конкатенация работает правильно, но отличное применяется и к другим столбцам, и мой результат пропускает несколько других строк.

Извините, я не смог объяснить хорошобольше, чем это.Может кто-нибудь помочь, пожалуйста.

1 Ответ

0 голосов
/ 01 апреля 2019

Не знаю, правильно ли я понял, если вы хотите что-то похожее на это

TABLE:test_test
Name    Mark
------- ------
ABC     10
DEF     10
GHI     10
JKL     20
MNO     20
PQR     30



mark count     names
---- -----     -----------
10       3     ABC,DEF,GHI
20       2     JKL,MNO
30       1     PQR

, попробуйте использовать функцию wm_concat

select mark, count(*), wm_concat(name) 
from test_test 
group by 
mark;

, вы можете получить больше информации о http://www.dba -oracle.com /...

...