Usługi SQL
Moderator: mikey
Usługi SQL
Witam,
macie może jakiś pomysł jak wyszukać faktury sprzedażowe które pozycje mają wyłącznie usługi. Męczę sie z tym już dobre parę godzin a jedynie umiem wyzyskać faktury które mają w pozycjach usługi ale też i towary czy produkty.
macie może jakiś pomysł jak wyszukać faktury sprzedażowe które pozycje mają wyłącznie usługi. Męczę sie z tym już dobre parę godzin a jedynie umiem wyzyskać faktury które mają w pozycjach usługi ale też i towary czy produkty.
Re: Usługi SQL
exists (typ usługa) and not exists (reszta typów)
powinno zadziałać
powinno zadziałać
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: Usługi SQL
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
IF (??Rodzaje =1)
BEGIN
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')
END
IF (??Rodzaje =2)
BEGIN
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')
END
IF (??Rodzaje =3)
BEGIN
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' ))
END
)
ELSE '' END
)
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 ?@R(
SELECT 1, 'DRZWI' UNION
SELECT 2, 'OKNA' UNION
SELECT 3, 'USŁUGI'
)|Rodzaje|&Rodzaj sprzedaży:REG= @? 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@
Co robię źle?
Re: Usługi SQL
przede wszystkim brakuje AND przed pierwszym warunkiem na ??Rodzaje
--------------------------------
Pozdrawiam
WW
Pozdrawiam
WW
Re: Usługi SQL
Błędna składnia w pobliżu słowa kluczowego „IF”.
-
- Posty: 253
- Rejestracja: 16 sty 2012, 23:21
- Rola: Konsultant CDN XL
- Lokalizacja: Łódź/Częstochowa
- Kontakt:
Re: Usługi SQL
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 AND
IF (??Rodzaje =1)
BEGIN
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')
END
IF (??Rodzaje =2)
BEGIN
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')
END
IF (??Rodzaje =3)
BEGIN
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' ))
END
)
ELSE '' END
)
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 ?@R(
SELECT 1, 'DRZWI' UNION
SELECT 2, 'OKNA' UNION
SELECT 3, 'USŁUGI'
)|Rodzaje|&Rodzaj sprzedaży:REG= @? 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@
Pozdrawiam.
Sebek
Re: Usługi SQL
Wywala komunikat: Błędna składnia w pobliżu słowa kluczowego „IF”.
-
- Posty: 253
- Rejestracja: 16 sty 2012, 23:21
- Rola: Konsultant CDN XL
- Lokalizacja: Łódź/Częstochowa
- Kontakt:
Re: Usługi SQL
A możesz wkleić cały raport z parametrami?
Sebek
Sebek
Re: Usługi SQL
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
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
AND n1.TrN_TrNNumer IN(
IF (??Rodzaje =1)
BEGIN
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'
END
IF (??Rodzaje =2)
BEGIN
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'
END
IF (??Rodzaje =3)
BEGIN
SELECT n3.TrN_TrNNumer FROM CDN.TraNag n3 WHERE n3.TrN_TrNNumer = n1.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' )
END
)
ELSE '' END
)
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 ?@R(
SELECT 1, 'DRZWI' UNION
SELECT 2, 'OKNA' UNION
SELECT 3, 'USŁUGI'
)|Rodzaje|&Rodzaj sprzedaży:REG= @? 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@
-
- Posty: 253
- Rejestracja: 16 sty 2012, 23:21
- Rola: Konsultant CDN XL
- Lokalizacja: Łódź/Częstochowa
- Kontakt:
Re: Usługi SQL
Witam,
Nie możesz w tym miejscu użyć IF. Przebuduj parametry tak, aby zamiast 1, 2, 3 zwracały serie i napisz jedno zapytanie SQL do sekcji IN, które w miejsce serii będzie wstawiać serie.
Pozdrawiam.
Sebek
Nie możesz w tym miejscu użyć IF. Przebuduj parametry tak, aby zamiast 1, 2, 3 zwracały serie i napisz jedno zapytanie SQL do sekcji IN, które w miejsce serii będzie wstawiać serie.
Pozdrawiam.
Sebek