Zestawienie

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

Moderator: mikey

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

Zestawienie

Post autor: VIkking »

Witam,

wyjaśni mi ktoś dlaczego pojawia się komunikat:" Konwersja wartości „BO” obiektu varchar na typ danych int nie powiodła się."

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 KosztKsiegowy,
		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 n1.TrN_Stan >= 3
	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_TrNNumer in (SELECT ROW_NUMBER() OVER (ORDER BY CDN.tranag.Trn_TrnSeria ) 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 =??rodzaj )


	
	

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
order by 'Sprzedaż netto PLN' desc


@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 ?@O(DRZWI:1|OKNA:2|Pozostałe:3|)|Rodzaj|Rodzaj 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 ?@R(SELECT 1 AS Id, 'PWD' AS Kod UNION 
		SELECT 2, 'PBO' UNION )|rodzaj|Rodzaj:REG=PWD @? @H(??rodzaj <> 3) PAR@
		
		
@PAR ?@D17|dataOD|Data od:REG=80358 @? @H(??okres <> 4) PAR@
@PAR ?@D17|dataDO|Data do:REG=80722 @? @H(??okres <> 4) PAR@
Albo jak wstawić zmieną która by przyjmowała różne wartości zależności od zaznaczonego checkboxa?

marceynowa
Posty: 341
Rejestracja: 29 lut 2008, 11:27
Rola: Administrator CDN XL
Wersja: 2022
Lokalizacja: Gdynia

Re: Zestawienie

Post autor: marceynowa »

w ostatniej linii przed GROUP BY jest:
n2.TrN_TrNSeria =??rodzaj

Seria jest typu varchar, a ??rodzaj jest liczbą.

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

Re: Zestawienie

Post autor: VIkking »

A jak zrobić w XL żeby powiedzmy zmienna ??rodzaj była typu varchar. O ile SQL nie jest obcy o tyle język XL jest dość dziwny przynajmniej dla mnie nowicjusza. Chodzi mi o np zrobienie listy z której wybiorę sobie Drzwi i wtedy zmienna ??rodzaj przyjmie wartość 'PWD'

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

Re: Zestawienie

Post autor: praiser »

W zapytaniu wykresu pod prawym myszy masz wszystko co potrzeba w prostym generatorze , w tym parametry dynamiczne.
Właściwie nic nie potrzeba wiedzieć bo wszystko jest typu choose & click
--------------------------------
Pozdrawiam
WW

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

Re: Zestawienie

Post autor: praiser »

Chociaż można to tak spróbować ogarnąć:

@PAR ?@R(

SELECT 1, 'DRZWI' UNION
SELECT 2, 'OKNA' UNION
SELECT 3, 'POZOSTAŁE'

)|Rodzaje|&Rodzaj sprzedaży za:REG= @? PAR@

(....)

WHERE n2.TrN_TrNSeria = (

CASE ??Rodzaje

WHEN 1 THEN 'PWD'
WHEN 2 THEN 'INNA SERIA'
WHEN 3 THEN 'I TAK DALEJ'
ELSE '' END
)
--------------------------------
Pozdrawiam
WW

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

Re: Zestawienie

Post autor: VIkking »

Dzięki jesteś Wielki

ODPOWIEDZ