Query - agregacja danych

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
ODPOWIEDZ
wojtas7
Posty: 1061
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 71 times
Been thanked: 315 times

Query - agregacja danych

Post autor: wojtas7 »

Takie pytanko, mamy Querę całkiem prostą z trzech tabel - zużycie materiałów.

W wyniku mamy listę materiałów+zakład+rok księgowy + ilości (na każdy miesiąc)

Więc w wyniku na przykład jest jeden artykuł i trzy lata - 2019, 2018 i 2017 -> tak jak oczekiwane 3 wiersze wynikowe.

Czy da się w Query zrobić tak, żeby w efekcie był tylko jeden wiersz, ale te ilości były przeniesione z wierszy do kolumn? W sensie że zrobiłbym tyle kolumn ile chcę sumować i z każdego wiersza przeniósł to do własnych pól (w kodzie ABAP w Query to łatwe).

Jeszcze inaczej -> w programie Query w sekcji ABAP można wstrzyknąć swój kod, odpala się on w pętli (FETCH po kursorze). Dla pierwszego wpisu dla materiału+zakład musiałbym sumować pozostałe lata, no i pozostałe lata spowodować że nie będą się wyświetlać.

Czy to mega skomplikowane i lepiej zrobić to po prostu w zetowym raporcie?
aszymanski
Posty: 72
Rejestracja: pt lip 11, 2014 1:01 pm
Lokalizacja: Kraków
Has thanked: 11 times
Been thanked: 28 times

Re: Query - agregacja danych

Post autor: aszymanski »

Cześć, jeśli już miałbym tak kombinować, to tą transpozycję wierszy na kolumny najlepiej byłoby zrobić w InfoSet (ale tam też potrzebny będzie ABAP), a samo Query byłoby prostym wyświetleniem danych z tego InfoSeta.
Głównym problemem w tym przypadku jest to, że w InfoSet nie ma dynamicznych kolumn, a dopiero po wyciągnięciu danych wiesz jakie kolumny trzeba zrobić. Co zrobisz za 2 miesiące jak się okaże że jest potrzebna nowa kolumna 2020 (no dobra, akurat w tym przypadku można to przewidzieć).
Ale u mnie kolumna to było np. centrum zysku czy dział gospodarczy (w tej kolumnie kwoty dla danego CZ) i musiało to działać, gdy ktoś dodał do systemu nowe CZ czy DG.
Dlatego takie raporty robiłem wyłącznie w ABAPie z użyciem dynamicznego tworzenia itab.
ODPOWIEDZ