Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: primawojtek w Sierpień 23, 2019, 13:27:38

Tytuł: Towary sprzedane z rabatem
Wiadomość wysłana przez: primawojtek w 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
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: yemet w 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...
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: primawojtek w 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
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: primawojtek w Sierpień 23, 2019, 14:13:29
coś słbo mi to idzie:)
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: yemet w Sierpień 23, 2019, 14:16:04
No ale w czym dokładnie jest problem?
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: primawojtek w 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
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: yemet w 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.
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: primawojtek w Sierpień 23, 2019, 14:53:12
Myślałem że to prostsza zabawa(:
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: yemet w Sierpień 23, 2019, 14:54:17
Nikt nie powiedział, że będzie łatwo ;)
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: primawojtek w 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
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: birds22 w Sierpień 23, 2019, 15:11:01
Komunikat jasny - Nie ma kolumny o nazwie adr_Towar
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: yemet w 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
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: primawojtek w 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
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: birds22 w Sierpień 23, 2019, 16:20:18
W Group BY po dok_datawyst brak przecinka
Tytuł: Odp: Towary sprzedane z rabatem
Wiadomość wysłana przez: primawojtek w 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