2011-09-15 11 views
6

mam to stwierdzenie, które łączy wiele wierszy do jednego a następnie przesyła je w sposób muszę dane:Oracle połączyć wiele wierszy w jeden z odrębnego tytułu

SELECT COURSES_ID, REQUISITE_TYPE_TITLE 
      , RTRIM 
      (xmlagg (xmlelement (c, CONDITION_TITLE || '' || REQ_TEXT || '' ) order by ORDER_NUM).extract ('//text()') 
      , ',') AS REQTexts 
    FROM COS_REQUISITES 
    WHERE COURSES_ID = '1175' 
    AND REQUISITE_TYPE_TITLE != 'Corequisite' 
    GROUP BY COURSES_ID, REQUISITE_TYPE_TITLE; 

Wynik:

╔═══════════╦════════════╦═════════════════════════════════════╦═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ 
║ ORDER_NUM ║ COURSES_ID ║  REQUISITE_TYPE_TITLE   ║                                       REQ_TEXT                                       ║ 
╠═══════════╬════════════╬═════════════════════════════════════╬═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣ 
║   1 ║  1175 ║ Limitation on Enrollment   ║ With minimum grade of "C"                                                                       ║ 
║   2 ║  1175 ║ Advisory on Recommended Preparation ║ MATH 200 or equivalent college course with "C" or better or equivalent college course with "C" or better or MATH 205 or equivalent college course with "C" or better or or equivalent college course with "C" or better or equivalent college course with "C" or better ║ 
╚═══════════╩════════════╩═════════════════════════════════════╩═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ 

struktura:

╔═══════════╦════════════╦═══════════╦═════════════════════════════════════╦══════════════════════════════════════════════════════════╗ 
║ ORDER_NUM ║ COURSES_ID ║ CONDITION ║  REQUISITE_TYPE_TITLE   ║       REQ_TEXT       ║ 
╠═══════════╬════════════╬═══════════╬═════════════════════════════════════╬══════════════════════════════════════════════════════════╣ 
║  1164 ║  1175 ║   ║ Advisory on Recommended Preparation ║ MATH 200 or equivalent college course with "C" or better ║ 
║  1165 ║  1175 ║   ║ Advisory on Recommended Preparation ║ or equivalent college course with "C" or better  ║ 
║  1166 ║  1175 ║ or  ║ Advisory on Recommended Preparation ║ MATH 205 or equivalent college course with "C" or better ║ 
║  1167 ║  1175 ║ or  ║ Advisory on Recommended Preparation ║ or equivalent college course with "C" or better  ║ 
║  1168 ║  1175 ║   ║ Advisory on Recommended Preparation ║ or equivalent college course with "C" or better  ║ 
║  1169 ║  1175 ║   ║ Limitation on Enrollment   ║ With minimum grade of "C"        ║ 
╚═══════════╩════════════╩═══════════╩═════════════════════════════════════╩══════════════════════════════════════════════════════════╝ 

kupna wynik:

╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ 
║ Advisory on Recommended Preparation MATH 200 or equivalent college course with "C" or better or equivalent college course with "C" or better or MATH 205 or equivalent college course with "C" or better or equivalent college course with "C" or better or equivalent college course with "C" or better Limitation on Enrollment With minimum grade of "C" ║ 
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ 

Próbuję uniknąć konieczności umieszczania tego w tabeli tymczasowej lub wielu widokach, które wyświetlałyby tę informację w jednej sekcji.

Wiem, że ma złe dane, ale powiedziano mi, Garbage In, Garbage Out. Każda pomoc będzie bardzo ceniona.

Nawet LISTAGG która nie pozwala na odrębne miarę mogę powiedzieć:

SELECT COURSES_ID, LISTAGG (REQUISITE_TYPE_TITLE || '' || CONDITION_TITLE || '' || REQ_TEXT " ') WITHIN GROUP (ZAMÓWIENIE PRZEZ ORDER_NUM) AS Title FROM COS_REQUISITES WHERE COURSES_ID =' 1175 ' GROUP BY COURSES_ID;

Wynik:

╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ 
║                                                                TITLE                                                                ║ 
╠════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣ 
║ Advisory on Recommended Preparation MATH 200 or equivalent college course with "C" or better Advisory on Recommended Preparation or equivalent college course with "C" or better Advisory on Recommended Preparation or MATH 205 or equivalent college course with "C" or better Advisory on Recommended Preparation or or equivalent college course with "C" or better Advisory on Recommended Preparation or equivalent college course with "C" or better Limitation on Enrollment With minimum grade of "C" ║ 
╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ 

Wskazówka powtarza REQUISITE_TYPE_TITLE, ja tylko chcę, żeby pokazać się kiedyś jak poszukiwanych wynik. Nie mogę zmodyfikować tabeli, aby była pusta, ponieważ jest to tabela ładowana dynamicznie i aktualizowana przez kogoś innego codziennie.

+3

wow, pseudographics! Dawno się nie widzieliśmy! (Poza moją instalacją mojego Far Managera.) Będę udawał, że jestem + 1 'użytecznym, dobrze napisanym i ilustrowanym pytaniem, a nie tylko tymi pięknymi tabelami. :) –

+1

lol dzięki ... Ten link był dla mnie pomocny: http://www.sensefulsolutions.com/2010/10format-text-as-table.html Skopiuj dane do Excela w tabeli nagłówki itp. Wybierz Unicode art i gotowe. Również jak pokazano: http://webapps.stackexchange.com/questions/6700/is-there-a-webapp-to-create-ascii-art-tables i http://meta.stackexchange.com/questions/ 83009/do-you-know-any-online-tool-that-tworzy-ascii-tables-for-proper-use-on-stack-exc – AhsenB

+0

Co za wspaniałe narzędzie, dzięki! –

Odpowiedz

1

nieco niechlujny ale powinna przynieść co prosiłeś

SELECT 
COURSES_ID, 
RTRIM (xmlagg (xmlelement (c, REQUISITE_TYPE_TITLE || '' || REQTexts || '' ) order by mino).extract ('//text()'), ',') AS REQTexts 
FROM 
(
SELECT 
COURSES_ID, REQUISITE_TYPE_TITLE, MIN (ORDER_NUM) mino, 
RTRIM (xmlagg (xmlelement (c, CONDITION_TITLE || '' || REQ_TEXT || '' ) order by ORDER_NUM).extract ('//text()') , ',') AS REQTexts 
FROM COS_REQUISITES 
WHERE COURSES_ID = '1175' 
AND REQUISITE_TYPE_TITLE != 'Corequisite' 
GROUP BY COURSES_ID, REQUISITE_TYPE_TITLE 
) 
GROUP BY COURSES_ID; 
Powiązane problemy