Parametr numeryczny

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

Moderator: mikey

Lilpri
Posty: 127
Rejestracja: 13 maja 2019, 11:04
Rola: Administrator CDN XL

Parametr numeryczny

Post autor: Lilpri »

Hej,

Mam mały problem z parametrem numerycznym. Potrzebuję na podstawie podanego parametru liczyć rabat dla ceny.

Kod: Zaznacz cały

@PAR ?@D17|DataOd|&DataOd:REG={DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|DataDo|&DataDo:REG={DateClwLastDay('m')} @? PAR@

@PAR ?@R(select atw_id, atw_wartosc from erpxl_lt.cdn.atrybutywartosci where atw_atkid=41)|AtrID|Atrybut:REG= @? PAR@
@PAR ?@R(select atw_id, atw_wartosc from erpxl_lt.cdn.atrybutywartosci where atw_atkid=57)|AtrIDs|Atrybut:REG= @? PAR@
@PAR ?@R(select prm_id, prm_akronim from erpxl_lb.cdn.prmkarty )|PRMID|Cena:REG= @? PAR@
@PAR ?@N4|count|&Wpisz Rabat:REG= @? PAR@
SELECT    Lp=1, Twr_GidNumer, KodTowaru=Twr_Kod, NazwaTowaru = Twr_nazwa, Model=Atr_wartosc,
 EAN=Twr_ean
,CenaSRP=isnull((select twc_wartosc from erpxl_lt.cdn.TwrCeny where  twr_gidnumer=twc_twrnumer and twc_tcnid=1),0)
,CenaZakup=isnull((select top 1 tpr_wartosc from erpxl_lb.cdn.twrkarty a left join erpxl_lb.cdn.twrgrupy lbb on lbb.twg_gidnumer=a.twr_gidnumer and lbb.twg_gidtyp=16
left join erpxl_lb.cdn.twrgrupy lba on lba.twg_gidtyp='-16' and  lba.twg_gidnumer=lbb.twg_gronumer
left outer join erpxl_lb.cdn.twrpromocje on lba.twg_gidnumer=tpr_twrnumer and lba.twg_gidtyp=tpr_twrtyp where a.twr_kod=b.twr_kod and tpr_prmid=??PRMID),0)
,Rabat = (isnull((select top 1 (tpr_wartosc-(tpr_wartosc* .??count )) from erpxl_lb.cdn.twrkarty a left join erpxl_lb.cdn.twrgrupy lbb on lbb.twg_gidnumer=a.twr_gidnumer and lbb.twg_gidtyp=16
left join erpxl_lb.cdn.twrgrupy lba on lba.twg_gidtyp='-16' and  lba.twg_gidnumer=lbb.twg_gronumer
left outer join erpxl_lb.cdn.twrpromocje on lba.twg_gidnumer=tpr_twrnumer and lba.twg_gidtyp=tpr_twrtyp where a.twr_kod=b.twr_kod and tpr_prmid=32),0))
FROM erpxl_lt.cdn.TwrKarty b 
left join erpxl_lt.cdn.atrybuty on Atr_obinumer=twr_gidnumer
left join erpxl_lt.cdn.kntkarty  on Knt_GIDNumer=Twr_PrdNumer
WHERE ( (atr_atkid=11 and atr_wartosc!='') and( ceiling(cast(convert(datetime,cdn.tstodate(b.Twr_DataUtworzenia,1), 120) as float)+36162) between ??DataOd and ??DataDo+1 and b.twr_nazwa like'%xxxx%')
and b.twr_gidnumer in (select atr_obinumer from erpxl_lt.cdn.atrybuty where atr_Wartosc= ??_Q_RES2_AtrID) and twr_gidnumer in (select atr_obinumer from erpxl_lt.cdn.atrybuty where atr_Wartosc= ??_Q_RES2_AtrIDs) ) and b.twr_kod not like '%- pp'
GROUP BY Twr_GidNumer, Twr_Kod, twr_nazwa, atr_wartosc,twr_ean 
order by NazwaTowaru
W powyżsyzm przykładzie jeśli podan wartość numeryczną mniejszą niż 10 to traktowane jest jako nie jako:
- 1,2,3,4,5,6,7,8,9
Tylko jako:
- 10,20,30,40,50,60,70,80,90

W jaki sposób można to zrobić? Tylko poprzez jakiegoś case, że jeśli ??count jest mniejsze od 10 to mnoży przez .0??count? Czy może jest jeszcze inny sposób?

Awatar użytkownika
wacek
Posty: 709
Rejestracja: 27 paź 2008, 18:04
Rola: Administrator CDN XL
Lokalizacja: Łódzkie

Re: Parametr numeryczny

Post autor: wacek »

Może tak, jeśli dobrze zrozumiałem problem.



@PAR ?@N4|X|&X:0 @? PAR@

SELECT CAST((CAST ((1 * ??X) AS DECIMAL(10, 2))) / 100 AS DECIMAL(10, 2)) AS XXX
Pozdrawiam,
Robert

select convert(varchar(100),0x637a6173616d69207069737aea2074752067b375706f7479203a29)

Lilpri
Posty: 127
Rejestracja: 13 maja 2019, 11:04
Rola: Administrator CDN XL

Re: Parametr numeryczny

Post autor: Lilpri »

Dzięki, o coś takiego chodziło

ODPOWIEDZ