Usługi SQL

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

Awatar użytkownika
praiser
Posty: 708
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Usługi SQL

Post autor: praiser »

Skoro to tylko 3 opcje to mozna by użyć parametru typu true / false i polecenia choose

i jeszcze pytanie , tak właściwie to czemu zwracany jest zestaw row_number() do n1.Trn_TrnNumer ?

anyway........

Kod: Zaznacz cały

@PAR ?@X|Drzwi|&Drzwi:REG=0 @? PAR@
@PAR ?@X|Okna|&Okna:REG=0 @? PAR@
@PAR ?@X|Uslugi|&Uslugi:REG=0 @? PAR@

(....)

	and n1.TrN_Stan >= 3

                {choose (??Drzwi=0,' 1=1 ', ' and n1.TrN_TrNNumer IN (SELECT ROW_NUMBER() OVER (ORDER BY n2.Trn_TrnNUMER ) AS REKORD FROM CDN.tranag left join cdn.TraSElem on TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp and Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer WHERE n2.TrN_TrNSeria = 'PWD' ) ' }


                {choose (??Okna=0, ' 1=1', ' and n1.TrN_TrNNumer IN (SELECT ROW_NUMBER() OVER (ORDER BY n2.Trn_TrnNUMER ) AS REKORD FROM CDN.tranag left join cdn.TraSElem on TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp and Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer WHERE n2.TrN_TrNSeria = 'PBO') ' }

               {choose (??Uslugi=0, ' 1=1', ' and n1.TrN_TrNNumer IN (SELECT n3.TrN_TrNNumer FROM  CDN.TraNag n3 WHERE n3.TrN_TrNNumer = n1.TrN_TrN_TrNNumer
	AND
	EXISTS SELECT TraElem.TrE_GIDNumer FROM CDN.TraElem WHERE TrE_TypTwr =4  AND TrE_GIDNumer =n1.TrN_GIDNumer AND TrE_TypTwr !=2 AND TrE_TypTwr!=3 
	AND  NOT EXISTS (
	SELECT  ROW_NUMBER() OVER (ORDER BY n2.Trn_TrnNUMER ) AS REKORD  FROM CDN.tranag  left join cdn.TraSElem on  TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp AND Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer 
	LEFT JOIN cdn.TraElem el on el.TrE_GIDNumer = n2.TrN_GIDNumer AND el.TrE_GIDTyp= n2.TrN_GIDTyp 
	WHERE  n2.TrN_TrNSeria = 'PWD'OR n2.TrN_TrNSeria = 'PBO' ) ' }
	
group by
k1.knt_akronim, k1.Knt_Nazwa1, k1.Knt_AkwTyp, k1.Knt_AkwNumer, k2.Knt_Akronim, p1.Prc_Nazwisko, p1.Prc_Imie1, p2.Prc_Nazwisko, p2.Prc_Imie1
order by 'Sprzedaż netto PLN' desc
--------------------------------
Pozdrawiam
WW

VIkking
Posty: 176
Rejestracja: 20 paź 2021, 14:28
Rola: Administrator CDN XL
Wersja: 2022
Kontakt:

Re: Usługi SQL

Post autor: VIkking »

Z jakiegoś powodu nie działa wybieranie albo ja jestem zbyt głupi na to.

VIkking
Posty: 176
Rejestracja: 20 paź 2021, 14:28
Rola: Administrator CDN XL
Wersja: 2022
Kontakt:

Re: Usługi SQL

Post autor: VIkking »

row_number() -> nie wiedziałem jak zrobić więc zrobiłem to po chłopsku i potrzebuje tego aby pokazał mi wszystkie pozycję danej faktury i jeśli choć jedna pozycja posiada dokument PW z serią PWD albo PBO to zalicza do odpowiedniej kategori.

Awatar użytkownika
praiser
Posty: 708
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Usługi SQL

Post autor: praiser »

spróbuj

' and n1.TrN_GidNumer IN (SELECT Trn_GidNumer AS REKORD from CDN.TraNag....
--------------------------------
Pozdrawiam
WW

VIkking
Posty: 176
Rejestracja: 20 paź 2021, 14:28
Rola: Administrator CDN XL
Wersja: 2022
Kontakt:

Re: Usługi SQL

Post autor: VIkking »

Zamieniłem na :

Kod: Zaznacz cały

SELECT
lp=1,
	k1.Knt_Akronim AS 'Akronim kontrahenta', 
	k1.Knt_Nazwa1 AS 'Nazwa kontrahenta',
	SUM(TrE_KsiegowaNetto) as 'Sprzedaż netto PLN',
	sum(TrE_KosztKsiegowy) as 'Koszt Ksiegowy',
		case when k1.Knt_AkwTyp = 944 then (select concat(Prc_Nazwisko, ' ', Prc_Imie1) from cdn.PrcKarty where Prc_GIDNumer = k1.Knt_AkwNumer)
		when k1.Knt_AkwTyp = 32 then k2.Knt_Akronim
		else '' end as Akwizytor,
	concat(p2.Prc_Nazwisko, ' ', p2.Prc_Imie1) as Opiekun


	--sum(TrE_KosztKsiegowy) as KosztKsiegowy,
--				TrE_KsiegowaNetto as 'Sprzedaż netto PLN',
--				TrE_KosztKsiegowy as KosztKsiegowy,
                --SUM(tre_ksiegowanetto)-sum(TrE_KosztKsiegowy) AS 'Marża',
--							tre_ksiegowanetto-TrE_KosztKsiegowy AS 'Marża',
--	CASE WHEN sum(TrE_KosztKsiegowy) < SUM(tre_ksiegowanetto) THEN 
--                                str((round( (sum(tre_ksiegowanetto)-SUM(tre_kosztksiegowy))/SUM(tre_ksiegowanetto),2)*100), 3,0) + ' %' 
--                 ELSE '' END AS 'Marża %',
--	CASE WHEN TrE_KosztKsiegowy < tre_ksiegowanetto THEN 
--                                str((round( (tre_ksiegowanetto-tre_kosztksiegowy)/tre_ksiegowanetto,2)*100), 3,0) + ' %' 
--                 ELSE '' END AS 'Marża %',




FROM cdn.tranag n1 
	JOIN cdn.KntKarty k1 on k1.Knt_GIDNumer=n1.TrN_KntNumer
	left join cdn.TraElem on n1.TrN_GIDTyp=TrE_GIDTyp AND n1.TrN_GIDNumer=TrE_GIDNumer
	left JOIN cdn.TwrKarty ON Twr_GIDNumer=TrE_TwrNumer
	left JOIN cdn.TwrGrupy ON Twr_GIDTyp=TwG_GIDTyp AND Twr_GIDNumer=TwG_GIDNumer
	left JOIN cdn.KntKarty k2 on k2.Knt_GIDTyp=k1.Knt_AkwTyp and k2.Knt_GIDNumer=k1.Knt_AkwNumer
	left join cdn.PrcKarty p1 on p1.Prc_GIDTyp=k1.Knt_AkwTyp and p1.Prc_GIDNumer=k1.Knt_AkwNumer
	left join cdn.KntOpiekun on KtO_KntNumer=k1.Knt_GIDNumer and KtO_KntTyp=k1.Knt_GIDTyp
	left join cdn.PrcKarty p2 on p2.Prc_GIDNumer=KtO_PrcNumer


WHERE 
	n1.trn_aktywny = 0
	and n1.trn_trnlp = 127
	and n1.trn_trntyp <> 12	
	and n1.trn_trntyp <> 13
	and n1.TrN_GIDTyp in (2033,2041,2037,2045)
	and n1.trn_spityp <> 0
	and ((??okres = 1 and n1.TrN_TrNRok = ??rok)
		or (??okres = 2 and n1.TrN_TrNRok = ??rok 
			and ((??kwartal = 1 and n1.TrN_TrNMiesiac in (1, 2, 3))
				or (??kwartal = 2 and n1.TrN_TrNMiesiac in (4, 5, 6))
				or (??kwartal = 3 and n1.TrN_TrNMiesiac in (7, 8, 9))
				or (??kwartal = 4 and n1.TrN_TrNMiesiac in (10, 11, 12))))
		or (??okres = 3 and n1.TrN_TrNRok = ??rok and n1.TrN_TrNMiesiac = ??miesiac)
		or (??okres = 4 and n1.TrN_Data2 between ??dataOD and ??dataDO))	
and n1.TrN_Stan >= 3

                {choose (??Drzwi=0,' 1=1 ', ' and n1.TrN_GIDNumer IN (SELECT n1.TrN_GIDNumer from CDN.TraNag left join cdn.TraSElem on TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp and Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer WHERE n2.TrN_TrNSeria = 'PWD' ) ' }


                {choose (??Okna=0, ' 1=1', ' and and n1.TrN_GIDNumer IN (SELECT n1.TrN_GIDNumer from CDN.TraNag left join cdn.TraSElem on TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp and Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer WHERE n2.TrN_TrNSeria = 'PBO') ' }

               {choose (??Uslugi=0, ' 1=1', ' and n1.TrN_TrNNumer IN (SELECT n3.TrN_TrNNumer FROM  CDN.TraNag n3 WHERE n3.TrN_TrNNumer = n1.TrN_TrN_TrNNumer
	AND
	EXISTS SELECT TraElem.TrE_GIDNumer FROM CDN.TraElem WHERE TrE_TypTwr =4  AND TrE_GIDNumer =n1.TrN_GIDNumer AND TrE_TypTwr !=2 AND TrE_TypTwr!=3 
	AND  NOT EXISTS (
	SELECT  n1.TRN_GIDNUMER FROM CDN.tranag  left join cdn.TraSElem on  TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp AND Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer 
	LEFT JOIN cdn.TraElem el on el.TrE_GIDNumer = n2.TrN_GIDNumer AND el.TrE_GIDTyp= n2.TrN_GIDTyp 
	WHERE  n2.TrN_TrNSeria = 'PWD'OR n2.TrN_TrNSeria = 'PBO' ) ' }
	
group by
k1.knt_akronim, k1.Knt_Nazwa1, k1.Knt_AkwTyp, k1.Knt_AkwNumer, k2.Knt_Akronim, p1.Prc_Nazwisko, p1.Prc_Imie1, p2.Prc_Nazwisko, p2.Prc_Imie1
order by 'Sprzedaż netto PLN' desc


@PAR ?@X|Drzwi|&Drzwi:REG=0 @? PAR@
@PAR ?@X|Okna|&Okna:REG=0 @? PAR@
@PAR ?@X|Uslugi|&Uslugi:REG=0 @? PAR@

@PAR ?@O(Rok:1|Kwartał:2|Miesiąc:3|Zakres dat:4)|okres|Podsumowanie sprzedaży za:REG=1 @? @MSG(Wybrany okres raportowania) @TIP(Wybrany okres raportowania) PAR@
@PAR ?@R(select TrN_TrNRok as ID, TrN_TrNRok as Rok from cdn.TraNag
			where
				(TrN_GIDTyp in (2034, 2042) or
				(TrN_GIDTyp in (2033, 2041) and TrN_SpiTyp in (2033, 2041) ) or
				(TrN_GIDTyp in (2037, 2045) and TrN_SpiTyp in (2037, 2045) ) or
				(TrN_GIDTyp in (2001, 2009, 2005, 2013) and TrN_SpiTyp <>0))
		group by TrN_TrNRok)|rok|Rok:2021 @? @H(??okres = 4) @TIP(Wybierz rok) PAR@

@PAR ?@R(SELECT 1 AS Id, 'I kwartał' AS Kod UNION 
		SELECT 2, 'II kwartał' UNION 
		SELECT 3, 'III kwartał' UNION 
		SELECT 4, 'IV kwartał')|kwartal|Kwartał:REG=I kwartał @? @H(??okres <> 2) PAR@

@PAR ?@R(SELECT 1 AS Id, 'Styczeń' AS Kod UNION 
		SELECT 2, 'Luty' UNION 
		SELECT 3, 'Marzec' UNION 
		SELECT 4, 'Kwiecień' UNION 
		SELECT 5, 'Maj' UNION 
		SELECT 6, 'Czerwiec' UNION 
		SELECT 7, 'Lipiec' UNION 
		SELECT 8, 'Sierpień' UNION 
		SELECT 9, 'Wrzesień' UNION 
		SELECT 10, 'Październik' UNION 
		SELECT 11, 'Listopad' UNION 
		SELECT 12, 'Grudzień')|miesiac|Miesiąc:REG=Styczeń @? @H(??okres <> 3) PAR@
		
		
@PAR ?@D17|dataOD|Data od:REG=80358 @? @H(??okres <> 4) PAR@
@PAR ?@D17|dataDO|Data do:REG=80722 @? @H(??okres <> 4) PAR@
z jakiegoś powodu sekcje choose nie bierze pod uwage.

Awatar użytkownika
praiser
Posty: 708
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Usługi SQL

Post autor: praiser »

pogubiłem trochę znaki,nawiasy i aliasy

Kod: Zaznacz cały

{choose (??Drzwi=0,' and 1=1 ', ' and n1.TrN_GIDNumer IN (SELECT distinct n3.TrN_GIDNumer from CDN.TraNag n3 left join cdn.TraSElem on TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp and Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer WHERE n2.TrN_TrNSeria = ''PWD'' ) ') }


                {choose (??Okna=0, ' and 1=1', ' and n1.TrN_GIDNumer IN (SELECT distinct n3.TrN_GIDNumer from CDN.TraNag n3 left join cdn.TraSElem on TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp and Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer WHERE n2.TrN_TrNSeria = ''PBO'' ) ') }

               {choose (??Uslugi=0, ' and 1=1', ' and n1.TrN_GidNUmer IN (SELECT distinct n3.TrN_GidNUmer FROM  CDN.TraNag n3 WHERE
	EXISTS (SELECT e2.TrE_GIDNumer FROM CDN.TraElem e2 WHERE e2.TrE_TypTwr =4  AND e2.TrE_GIDNumer =n1.TrN_GIDNumer AND e2.TrE_TypTwr NOT IN (2,3))
	AND  NOT EXISTS (
	SELECT distinct n3.TRN_GIDNUMER FROM CDN.tranag n3 left join cdn.TraSElem on  TrS_GIDTyp=n1.TrN_GIDTyp and TrS_GIDNumer=n1.TrN_GIDNumer
	left join cdn.Dostawy on Dst_GIDTyp=TrS_DstTyp AND Dst_GIDNumer=TrS_DstNumer and Dst_GIDLp=TrS_DstLp
	left join cdn.TraNag n2 on n2.TrN_GIDTyp=Dst_TrnTyp and n2.TrN_GIDNumer=Dst_TrnNumer 
	LEFT JOIN cdn.TraElem el on el.TrE_GIDNumer = n2.TrN_GIDNumer AND el.TrE_GIDTyp= n2.TrN_GIDTyp 
	WHERE  n2.TrN_TrNSeria = ''PWD'' OR n2.TrN_TrNSeria = ''PBO'' )) ') }
--------------------------------
Pozdrawiam
WW

VIkking
Posty: 176
Rejestracja: 20 paź 2021, 14:28
Rola: Administrator CDN XL
Wersja: 2022
Kontakt:

Re: Usługi SQL

Post autor: VIkking »

Dzięki za pomoc. Coś tam liczy :)

VIkking
Posty: 176
Rejestracja: 20 paź 2021, 14:28
Rola: Administrator CDN XL
Wersja: 2022
Kontakt:

Re: Usługi SQL

Post autor: VIkking »

Witam,

zgłupiałem. Już sam nie wiem jak złapać fakturę która jedynie ma pozycję jako towar?

Kod: Zaznacz cały

SELECT distinct TraNag.TrN_GIDNumer FROM  CDN.TraNag  
		LEFT JOIN cdn.TraElem e2 on e2.TrE_GIDTyp=TrN_GIDTyp AND e2.TrE_GIDNumer =TrN_GIDNumer
			WHERE    EXISTS (SELECT DISTINCT   e2.TrE_TypTwr WHERE e2.TrE_TypTwr =1 ) AND EXISTS (SELECT DISTINCT  e2.TrE_TypTwr WHERE e2.TrE_TypTwr <>4)
Ten kod i tak złapie wszystkie faktury które posiadają usługi jak i towary a mi chodzi o złapanie tylko faktur towarów.

Awatar użytkownika
praiser
Posty: 708
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Usługi SQL

Post autor: praiser »

exists ...... towar
and
not exists ...... usługa
--------------------------------
Pozdrawiam
WW

VIkking
Posty: 176
Rejestracja: 20 paź 2021, 14:28
Rola: Administrator CDN XL
Wersja: 2022
Kontakt:

Re: Usługi SQL

Post autor: VIkking »

Kod: Zaznacz cały

SELECT distinct TraNag.TrN_GIDNumer FROM  CDN.TraNag  
		LEFT JOIN cdn.TraElem e2 on e2.TrE_GIDTyp=TrN_GIDTyp AND e2.TrE_GIDNumer =TrN_GIDNumer
			WHERE  TrN_GIDNumer=28188 AND  EXISTS (SELECT DISTINCT   e2.TrE_TypTwr WHERE e2.TrE_TypTwr =1 ) AND NOT EXISTS (SELECT DISTINCT  e2.TrE_TypTwr WHERE e2.TrE_TypTwr =4)
Ale coś nie pyka bo nadal się wyświetla a idąc tym tropem nie powinno się pojawić skoro sprawdza czy posiada towar i czy nie posiada usługi.

ODPOWIEDZ