To nie może być to, czego szukasz, ale miałem szczęście w przeszłości z konstrukcji tak:
SELECT MAX(DECODE(fookey, 1, foo, NULL))
|| MAX(DECODE(fookey, 2, foo, NULL))
|| MAX(DECODE(fookey, 3, foo, NULL))
|| MAX(DECODE(fookey, 4, foo, NULL))
, groupingvalue
FROM mytable
GROUP BY groupingvalue;
Jest to niezależne od platformy i działa dobrze, kiedy mają dowolną, ale ograniczoną liczbę wartości dla foo i opierają się na innej wartości klucza.Jeśli na przykład masz tabelę faktur i chcesz zobaczyć wszystkie czasy liniowe z faktury w jednym wierszu, połączone i masz górny limit 5 elementów zamówienia, wyglądałoby to tak:
SELECT MAX(DECODE(lineno, 1, foo, NULL))
|| ', '
|| MAX(DECODE(lineno, 2, foo, NULL))
|| ', '
|| MAX(DECODE(lineno, 3, foo, NULL))
|| ', '
|| MAX(DECODE(lineno, 4, foo, NULL))
|| ', '
|| MAX(DECODE(lineno, 5, foo, NULL))
, invoiceid
FROM lineitem
GROUP BY invoiceid;
Która serwer używasz? Wątpię, czy istnieje ogólna metoda SQL, ale z pewnością istnieją konkretne metody implementacji. –
Używam Oracle. Jestem zdumiony, że nie ma łatwego sposobu na zrobienie tego w wyroczni. – paweloque