Autor Wątek: Towary sprzedane z rabatem  (Przeczytany 3909 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline primawojtek

  • Nowy użytkownik
  • *
  • Wiadomości: 11
  • Reputacja +0/-0
  • Wersja programu: 1.30
Towary sprzedane z rabatem
« dnia: Sierpień 23, 2019, 13:27:38 »
Witam

Jak dodać zestawienie towarów sprzedanych z rabatem w danym okresie czasu? Mam zestawienei paragonów na które udzielono rabatu. Czy można je zmodyfikować?

SELECT
   adr_Symbol as Symbol,
   adr_Nazwa as Kontrahent,
                dok_DataWyst as [Data wystawienia],
   dok_NrPelny [Numer dokumentu],
   isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) as [Warto?ć brutto przed rabatem],
   isnull(Sum(ob_WartBrutto),0) as [Warto?ć brutto po rabatach],
   (isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) as [Warto?ć brutto udzielonego rabatu],
   '% udzielonego rabatu' = CAST((((isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0))*100)/(isnull(Sum(ob_Ilosc * ob_CenaBrutto),1)))as money)

FROM dbo.dok__Dokument T0
JOIN dbo.dok_Pozycja T1 ON T1.ob_DokHanId = T0.dok_Id and ob_TowRodzaj in (1,8)
LEFT JOIN dbo.kh__Kontrahent T2 ON T2.kh_Id = dok_OdbiorcaId
LEFT JOIN dbo.adr__Ewid T3 ON T3.adr_IdObiektu = T2.kh_Id and adr_TypAdresu = 1
WHERE  dok_typ = 21 and dok_Status <> 2 and dok_DataWyst BETWEEN {DR:Data:}
Group by
adr_Symbol,
adr_Nazwa,
dok_NrPelny,
dok_DataWyst
having
(isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) <> 0
order by dok_DataWyst

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Towary sprzedane z rabatem
« Odpowiedź #1 dnia: Sierpień 23, 2019, 13:40:20 »
Dodaj JOINa do tabelę tw__towar T4 on T4.tw_id=T1.ob_towid i kombinuj dalej ;)

PS. Zmień sobie nazewnictwo aliasów bo prędzej czy później się pogubisz w tych TX. Ja np. robię tak:
dok__dokument -> dd
dok_pozycja -> dp
tw__towar -> tt
adr__ewid -> ae

Wymyśl sobie jakiś swój schemat. Byle nie T1, T2, T3...

Offline primawojtek

  • Nowy użytkownik
  • *
  • Wiadomości: 11
  • Reputacja +0/-0
  • Wersja programu: 1.30
Odp: Towary sprzedane z rabatem
« Odpowiedź #2 dnia: Sierpień 23, 2019, 14:11:58 »
SELECT
   adr_Symbol as Symbol,
   adr_Nazwa as Kontrahent,
                dok_DataWyst as [Data wystawienia],
   dok_NrPelny [Numer dokumentu],
   isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) as [Warto?ć brutto przed rabatem],
   isnull(Sum(ob_WartBrutto),0) as [Warto?ć brutto po rabatach],
   (isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) as [Warto?ć brutto udzielonego rabatu],
   '% udzielonego rabatu' = CAST((((isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0))*100)/(isnull(Sum(ob_Ilosc * ob_CenaBrutto),1)))as money)

FROM dbo.dok__Dokument T0
JOIN dbo.dok_Pozycja T1 ON T1.ob_DokHanId = T0.dok_Id and ob_TowRodzaj in (1,8)
LEFT JOIN dbo.kh__Kontrahent T2 ON T2.kh_Id = dok_OdbiorcaId
LEFT JOIN dbo.adr__Ewid T3 ON T3.adr_IdObiektu = T2.kh_Id and adr_TypAdresu = 1
LEFT JOIN tw__towar T4 on T4.tw_id=T1.ob_towid
WHERE  dok_typ = 21 and dok_Status <> 2 and dok_DataWyst BETWEEN {DR:Data:}
Group by
adr_Symbol,
adr_Nazwa,
dok_NrPelny,
dok_DataWyst
having
(isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) <> 0
order by dok_DataWyst

Offline primawojtek

  • Nowy użytkownik
  • *
  • Wiadomości: 11
  • Reputacja +0/-0
  • Wersja programu: 1.30
Odp: Towary sprzedane z rabatem
« Odpowiedź #3 dnia: Sierpień 23, 2019, 14:13:29 »
coś słbo mi to idzie:)

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Towary sprzedane z rabatem
« Odpowiedź #4 dnia: Sierpień 23, 2019, 14:16:04 »
No ale w czym dokładnie jest problem?

Offline primawojtek

  • Nowy użytkownik
  • *
  • Wiadomości: 11
  • Reputacja +0/-0
  • Wersja programu: 1.30
Odp: Towary sprzedane z rabatem
« Odpowiedź #5 dnia: Sierpień 23, 2019, 14:34:44 »
Dodałem  LEFT JOIN tw__towar T4 on T4.tw_id=T1.ob_towid
ale nie widzę w wyników filtrowania. Chciałbym widzieć tylko info:
Symbol;   Data zakupu; sku; Nazwa towaru; Wartość brutto przed rabatem;   Wartość brutto po rabatach;   Wartość brutto udzielonego rabatu;   % udzielonego rabatu

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Towary sprzedane z rabatem
« Odpowiedź #6 dnia: Sierpień 23, 2019, 14:43:46 »
Jakiego filtrowania? Ty chyba nie za bardzo ogarniasz SQL-a  skoro uważasz, że samo dopisanie JOINa spowoduje, że w wyniku zapytania pojawią się magicznie dodatkowe kolumny. Przecież trzeba dodać odpowiednie kolumny z tabeli towarów w sekcjach select i group by żeby zaczęły się  one pojawiać w wynikach.

Offline primawojtek

  • Nowy użytkownik
  • *
  • Wiadomości: 11
  • Reputacja +0/-0
  • Wersja programu: 1.30
Odp: Towary sprzedane z rabatem
« Odpowiedź #7 dnia: Sierpień 23, 2019, 14:53:12 »
Myślałem że to prostsza zabawa(:

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Towary sprzedane z rabatem
« Odpowiedź #8 dnia: Sierpień 23, 2019, 14:54:17 »
Nikt nie powiedział, że będzie łatwo ;)

Offline primawojtek

  • Nowy użytkownik
  • *
  • Wiadomości: 11
  • Reputacja +0/-0
  • Wersja programu: 1.30
Odp: Towary sprzedane z rabatem
« Odpowiedź #9 dnia: Sierpień 23, 2019, 15:01:12 »
SELECT
   adr_Symbol as Symbol,
                dok_DataWyst as [Data wystawienia],
   dok_NrPelny [Numer dokumentu],
   adr_Towar [Towar],
   isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) as [Warto?ć brutto przed rabatem],
   isnull(Sum(ob_WartBrutto),0) as [Warto?ć brutto po rabatach],
   (isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) as [Warto?ć brutto udzielonego rabatu],
   '% udzielonego rabatu' = CAST((((isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0))*100)/(isnull(Sum(ob_Ilosc * ob_CenaBrutto),1)))as money)

FROM dbo.dok__Dokument T0
JOIN dbo.dok_Pozycja T1 ON T1.ob_DokHanId = T0.dok_Id and ob_TowRodzaj in (1,8)
LEFT JOIN dbo.kh__Kontrahent T2 ON T2.kh_Id = dok_OdbiorcaId
LEFT JOIN dbo.adr__Ewid T3 ON T3.adr_IdObiektu = T2.kh_Id and adr_TypAdresu = 1
LEFT JOIN tw__towar T4 on T4.tw_id=T1.ob_towid
WHERE  dok_typ = 21 and dok_Status <> 2 and dok_DataWyst BETWEEN {DR:Data:}
Group by
adr_Symbol,
adr_Nazwa,
dok_NrPelny,
dok_DataWyst
having
(isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) <> 0
order by dok_DataWyst

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9208
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
Odp: Towary sprzedane z rabatem
« Odpowiedź #10 dnia: Sierpień 23, 2019, 15:11:01 »
Komunikat jasny - Nie ma kolumny o nazwie adr_Towar
Sławek, Zduńska Wola

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Towary sprzedane z rabatem
« Odpowiedź #11 dnia: Sierpień 23, 2019, 15:26:13 »
t4.tw_nazwa do sekcji select i group by a w subiekcie F1 zakładka wyszukaj -> opis struktury zbiorów danych

Offline primawojtek

  • Nowy użytkownik
  • *
  • Wiadomości: 11
  • Reputacja +0/-0
  • Wersja programu: 1.30
Odp: Towary sprzedane z rabatem
« Odpowiedź #12 dnia: Sierpień 23, 2019, 16:13:56 »
Drążę dalej:) Help

SELECT
   adr_Symbol as Symbol,
                dok_DataWyst as [Data wystawienia],
   dok_NrPelny [Numer dokumentu],
   tw_Nazwa [NAZWA TOWARU],
   isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) as [Warto?ć brutto przed rabatem],
   isnull(Sum(ob_WartBrutto),0) as [Warto?ć brutto po rabatach],
   (isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) as [Warto?ć brutto udzielonego rabatu],
   '% udzielonego rabatu' = CAST((((isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0))*100)/(isnull(Sum(ob_Ilosc * ob_CenaBrutto),1)))as money)

FROM dbo.dok__Dokument T0
JOIN dbo.dok_Pozycja T1 ON T1.ob_DokHanId = T0.dok_Id and ob_TowRodzaj in (1,8)
LEFT JOIN dbo.kh__Kontrahent T2 ON T2.kh_Id = dok_OdbiorcaId
LEFT JOIN dbo.adr__Ewid T3 ON T3.adr_IdObiektu = T2.kh_Id and adr_TypAdresu = 1
LEFT JOIN tw__towar T4 on T4.tw_id=T1.ob_towid
WHERE  dok_typ = 21 and dok_Status <> 2 and dok_DataWyst BETWEEN {DR:Data:}
Group by
adr_Symbol,
adr_Nazwa,
dok_NrPelny,
dok_DataWyst
tw_Nazwa
having
(isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) <> 0
order by dok_DataWyst

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9208
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
Odp: Towary sprzedane z rabatem
« Odpowiedź #13 dnia: Sierpień 23, 2019, 16:20:18 »
W Group BY po dok_datawyst brak przecinka
Sławek, Zduńska Wola

Offline primawojtek

  • Nowy użytkownik
  • *
  • Wiadomości: 11
  • Reputacja +0/-0
  • Wersja programu: 1.30
Odp: Towary sprzedane z rabatem
« Odpowiedź #14 dnia: Sierpień 23, 2019, 16:34:38 »
Panowie dzięki za pomoc

SELECT
   dok_DataWyst as [Data wystawienia],
   dok_NrPelny [Numer dokumentu],
   tw_Nazwa [NAZWA TOWARU],
   isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) as [Wartość brutto przed rabatem],
   isnull(Sum(ob_WartBrutto),0) as [Wartość brutto po rabatach],
   (isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) as [Wartość brutto udzielonego rabatu],
   '% udzielonego rabatu' = CAST((((isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0))*100)/(isnull(Sum(ob_Ilosc * ob_CenaBrutto),1)))as money)

FROM dbo.dok__Dokument T0
JOIN dbo.dok_Pozycja T1 ON T1.ob_DokHanId = T0.dok_Id and ob_TowRodzaj in (1,8)
LEFT JOIN dbo.kh__Kontrahent T2 ON T2.kh_Id = dok_OdbiorcaId
LEFT JOIN dbo.adr__Ewid T3 ON T3.adr_IdObiektu = T2.kh_Id and adr_TypAdresu = 1
LEFT JOIN tw__towar T4 on T4.tw_id=T1.ob_towid
WHERE  dok_typ = 21 and dok_Status <> 2 and dok_DataWyst BETWEEN {DR:Data:}
Group by
adr_Nazwa,
dok_NrPelny,
dok_DataWyst,
tw_Nazwa
having
(isnull(Sum(ob_Ilosc * ob_CenaBrutto),0) - isnull(Sum(ob_WartBrutto),0)) <> 0
order by dok_DataWyst

Forum Użytkownikow Subiekt GT

Odp: Towary sprzedane z rabatem
« Odpowiedź #14 dnia: Sierpień 23, 2019, 16:34:38 »