Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty 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
-
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...
-
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
-
coś słbo mi to idzie:)
-
No ale w czym dokładnie jest problem?
-
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
-
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.
-
Myślałem że to prostsza zabawa(:
-
Nikt nie powiedział, że będzie łatwo ;)
-
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
-
Komunikat jasny - Nie ma kolumny o nazwie adr_Towar
-
t4.tw_nazwa do sekcji select i group by a w subiekcie F1 zakładka wyszukaj -> opis struktury zbiorów danych
-
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
-
W Group BY po dok_datawyst brak przecinka
-
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