Złączenie 2 tabel - prezentacja wyniku zapytania

0

Witam,
mój pierwszy posta na forum wiec proszę o wyrozumiałość ale jednocześnie o wytykanie rażących błędów :) Jestem w trakcie pracy nad zapytaniem i napotkałem na problem z którym nie mogę sobie poradzić mianowicie: zapytanie bedzie odwoływało się do co najmniej 2 tabel złączonych z wykorzystaniem left join

mam tabelę faktur:

Faktura_ID Data_faktury Kwota_faktury
f.1 2017-05-16 100,25

mam tabelę wpłat:

Faktura_ID Wpłata_ID Data_wpłaty Kwota_wpłaty
f.1 w.1 2017-05-25 50
f.1 w.2 2017-06-25 50,25

Wynik jaki chciałbym uzyskać:

Faktura_ID Kwota_faktury Kwota_wpłaty_2017_05 Kwota_wpłaty_2017_06
f.1 100,25 50 50,25

Chciałbym aby każdy miesiąc wpłat do danej faktur był prezentowany w kolejnych kolumnach..Z góry dziękuje za pomoc

0

Problem rozwiązany, zmodyfikowałem trochę swoje wymagania i jednak lepsze będzie pokazanie przedziału dni w jakim wpłynęła wpłata wiec kawałek kodu wygląda następująco:

case when 
TO_CHAR (d.Data_wpłaty - f.Data_faktury ,'999')<=30 
                 then d.KWOTA_WPLATY else 0 end wplaty30
case when 
TO_CHAR ((d.Data_wpłaty - f.Data_faktury ,'999')>=31 and TO_CHAR (d.Data_wpłaty - f.Data_faktury ,'999') )< 60
                 then d.KWOTA_WPLATY else 0 end wplaty60
.
.

itd. w zależności ile chcę mieć przedziałów

Niestety żeby nie było zbyt pięknie od razu napotkałem drugi problem z multiplikowaniem wierszy. Tzn. faktura powtarza się tyle razy ile wpłat będę do niej miał. Wiecie może jak pozbyć się tego problemu ?

0
  1. to_char jest zbędny
  2. musisz dać sum na kolumnach z przedziałami i group_by na Faktura_ID
0
  1. to_char zapewnia mi liczbę całkowitą w wyniku wyliczania rocznicy pomiędzy datami ponieważ data w tabelach źródłowych przechowuje również godziny minuty i sekundy.
  2. Jeśli dam sum na kolumnach wartościowych i pogrupuje to kwota_faktury pomnóży sie przez liczbę wierszy a chcę mieć pierwotną kwotę.
1
  1. od tego jest Trunc a nie To_char - raz masz niepotrzebną konwersję jawną na stringa a potem z powrotem niejawną na liczbę - bezsens
  2. przecież napisałem Ci, że Sum ma być na kolumnach z przedziałami a tam masz KWOTA_WPLATY a nie kwota_faktury
0
  1. Dzięki nie znałem tej funkcji. Wypróbuję ;)
  2. Jak korzystam z ```
    GROUP BY
1

Ty tak na poważnie? No to jak coś ma nie być sumowane to musi być w group by - to chyba oczywiste

0

Dzięki ! nigdy nie grupowałem kolumn wartościowych bo nie potrafiłem wyobrazić sobie przypadku biznesowego w którym byłoby to uzasadnione, teraz już wiem że są takowe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1