Witam wszystkich, zwracam się do was o pomoc w rozwiązaniu problemu z Group by. Mianowicie mam funkcję. (Oracle i PL/SQL)
CREATE OR REPLACE FUNCTION E(PAR_ZMIENNA IN VARCHAR2,PAR_NUMER IN VARCHAR2,PAR_MIESIAC IN VARCHAR2,PAR_ROK IN VARCHAR2)
RETURN TABELA_EWI
PIPELINED AS
BEGIN
IF PAR_NUMER = 'ALL' THEN
BEGIN
FOR cur IN (SELECT LTRIM(RTRIM(KG.numer ||'-'|| K1.numer ||'-'|| K2.numer ||'-'|| K3.numer,'-'),'-') "Numer konta",LTRIM(RTRIM(KG.nazwa||'-'|| K1.nazwa ||'-'|| K2.nazwa||'-'|| K3.nazwa,'-'),'-') "Nazwa konta",S.INDEKS "Index",S.NAZWA "Nazwa towaru",SUM(p.CENA_ * p.ILOSC_PRZYJETA) "Obrót" FROM SKLADNIK S INNER JOIN KONTO_KSIEGOWE K ON K.SKLADNIK_KF=S.ID_SKLADNIK
INNER JOIN CZLON_KONTO_3 K3 ON K.CZLON_3_KF=K3.ID_CZLON_KONTO_3
INNER JOIN CZLON_KONTO_2 K2 ON K3.CZLON_2_KF=K2.ID_CZLON_KONTO_2
INNER JOIN CZLON_KONTO_1 K1 ON K2.CZLON_1_KF=K1.ID_CZLON_KONTO_1
INNER JOIN CZLON_KONTO_GLOWNY KG ON K1.CZLON_G_KF=KG.ID_CZLON_KONTO_GLOWNY
inner join dokument_pz p on p.skladnik_kf=s.id_skladnik
WHERE TO_CHAR(p.DATA_WYSTAWIENIA, 'YYYY')=PAR_ROK
group by LTRIM(RTRIM(KG.numer ||'-'|| K1.numer ||'-'|| K2.numer ||'-'|| K3.numer,'-'),'-'),LTRIM(RTRIM(KG.nazwa||'-'|| K1.nazwa ||'-'|| K2.nazwa||'-'|| K3.nazwa,'-'),'-') ,S.INDEKS,S.NAZWA
order by numer) LOOP
PIPE ROW(TYP_EWI_KONTA(CUR."Numer konta",
CUR."Nazwa konta",
CUR."Index",
CUR."Nazwa towaru",
CUR."Obrót"));
END LOOP;
RETURN;
END;
END IF;
end;
--select * from table(e('','ALL','',''))
nie wyświetla błędów ale jak próbuje ją wywołać to wywala mi komunikat "not a GROUP BY expression" kiedy zmienię nazwy kolumn na aliasy w klauzuli GROUP BY wywala mi komunikat "alias : invalid identifier" Nie wiem co mam z tym zrobić. Proszę o jakąkolwiek pomoc w rozwiązaniu tego problemu.