Strona 1 z 1

Parametr numeryczny

: 09 cze 2021, 09:21
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?

Re: Parametr numeryczny

: 09 cze 2021, 23:32
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

Re: Parametr numeryczny

: 10 cze 2021, 09:58
autor: Lilpri
Dzięki, o coś takiego chodziło