krzesik
29.02.2016, 22:38:21
Mam bazę w której zapisuję dokumenty sprzedaży
złożona jest z dwóch tabel:
SPRZEDAŻ
(gdzie są m in pola)
- id_dok_spr
- nazwa_kontrahenta
- data_sprzedazy
- nr_dokumentu
- wartosc_netto
- wartosc_vat
- wartosc_brutto
.......
SPRZEDAZ_SRODEK
- id_dok_spr_srodek
- id_dok_spr
- data_sprzedazy
- nazwa_towaru
- cena_towaru
- stawka_vat
- wartosc_netto
- wartosc_vat
- wartosc_brutto
............
Mam problem aby wyświetlić w rekordzie sumy
- netto
- brutto
- vat
dla każdej ze stawek vat,
Kishin
1.03.2016, 08:48:41
SELECT stawka_vat,sum(wartosc_vat),sum(wartosc_netto),sum(wartosc_brutto)
FROM SPRZEDAZ_SRODEK
GROUP BY stawka_vat
krzesik
1.03.2016, 11:39:45
Dziękuję,
taka prezentacja wyników też mi wychodzi, ale nurtuje mnie to czy mogę wyświetlić dane w taki sposób
id_dok_spr | nazwa_kontrahenta | data_sprzedazy | sum(wartosc_brutto) | sum(wartosc_netto) | wartoscvat23% | wartoscvat8% .................
Kishin
1.03.2016, 12:26:37
SELECT c.id_dok_spr ,c.nazwa_kontrahenta,c.data_sprzedazy ,
(CASE WHEN t.stawka_vat= '23%' THEN t.wartosc_vat ELSE 0 END) AS wartoscvat23,
(CASE WHEN t.stawka_vat= '8%' THEN t.wartosc_vat ELSE 0 END) AS wartoscvat8,
sum(t.wartosc_netto)wartosc_netto,sum(t.wartosc_brutto)wartosc_brutto
FROM SPRZEDAZ_SRODEK t
JOIN SPRZEDAZ c ON c.id_dok_spr=t.id_dok_spr
GROUP BY
c.id_dok_spr ,c.nazwa_kontrahenta,c.data_sprzedazy
krzesik
1.03.2016, 13:55:17
Już coś zaczyna wychodzić, jednak jest jeszcze jeden problem, mam sytuację gdy w jednej fakturze mam kilka pozycji, są one oczywiście zapisane w kolejnych rekordach w tabeli sprzedaz_srodek, teraz w takim przypadku pokazuje mi dane odbiorcy oraz wypełnioną dla niego kolumnę np 23% a reszta jest zerowa.
Gdzie leży problem w grupowaniu? i jeszcze jedno, suma w poszczególnych rekordach nie jest sumą w obrębie stawki vat
zapytanie jest na realnych nazwach tabel i kolumn
SELECT c.id_dok_spr ,c.kontrahent_nazwa,c.data_sprzedazy ,
(CASE WHEN t.prc_vat= '23' THEN t.wartoscvat ELSE 0 END) AS wartoscvat23,
(CASE WHEN t.prc_vat= '8' THEN t.wartoscvat ELSE 0 END) AS wartoscvat8,
(CASE WHEN t.prc_vat= '5' THEN t.wartoscvat ELSE 0 END) AS wartoscvat5,
(CASE WHEN t.prc_vat= '3' THEN t.wartoscvat ELSE 0 END) AS wartoscvat3,
(CASE WHEN t.prc_vat= '0' THEN t.wartoscvat ELSE 0 END) AS wartoscvat0,
sum(t.wartoscN) as wartoscnetto,sum(t.wartoscbrutto) as wartoscbrutto
FROM sprzedaz_srodek t
JOIN sprzedaz c ON c.id_dok_spr=t.id_dok_spr
GROUP BY
c.id_dok_spr ,c.kontrahent_nazwa,c.data_sprzedazy
Kishin
1.03.2016, 14:43:03
no to musisz dodać kolejną wartość do grupowania który jest unikalny dla tych pozycji, nazwa towaru wydaje sie logiczna .
Do wartoscvat nie dalismy sumowania

SELECT c.id_dok_spr ,t.nazwa_towaru,c.kontrahent_nazwa,c.data_sprzedazy ,
(CASE WHEN t.prc_vat= '23' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat23,
(CASE WHEN t.prc_vat= '8' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat8,
(CASE WHEN t.prc_vat= '5' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat5,
(CASE WHEN t.prc_vat= '3' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat3,
(CASE WHEN t.prc_vat= '0' THEN sum(t.wartoscvat) ELSE 0 END) AS wartoscvat0,
sum(t.wartoscN) AS wartoscnetto,sum(t.wartoscbrutto) AS wartoscbrutto
FROM sprzedaz_srodek t
JOIN sprzedaz c ON c.id_dok_spr=t.id_dok_spr
GROUP BY
c.id_dok_spr ,t.nazwa_towaru,,c.kontrahent_nazwa,c.data_sprzedazy
Powinno śmigać
krzesik
1.03.2016, 15:21:44
nie, chyba źle napisałem, albo mnie nie zrozumiałeś. mam rekordy
id_dok_spr | nazwa_towaru | wartoscN | wartoscbrutto | prc_vat | wartoscvat
1 | towar 1 | 10,0 | 10,50 | 5 | 0,50
1 | towar 2 | 10,0 | 12,30 | 23 | 2,30
1 | towar 3 | 10,0 | 10,00 | 0 | 0,00
1 | towar 4 | 10,0 | 10,80 | 8 | 0,80
1 | towar 5 | 10,0 | 10,80 | 8 | 0,80
chciałbym wynik, jeśli to możliwe:
id_dok_spr | wartoscN | wartoscbrutto | prc_vat23 | prc_vat8 | prc_vat5 | prc_vat0 + nazwa_kontrahenta ......
1 | 50,00 | 54,40 | 2,30 | 1,60 | 0,50 | 0,00
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.