Originariamente inviato da reybluk
1) non funziona dove è l'errore?
Il prezzo 15 è contemporaneamente < 20 e < di 50
Quindi nella tua query ti prende la prima o la seconda condizione ?????
Non conosco la funzione CEILING ( acc.... non finisco mai di imparare )
ma ho capito che e una funzione testuale, Io resterei sul classico ROUND
__________________________________________________ ______________
Originariamente inviato da reybluk
3) CASE funziona anche su access (nel caso la risp fosse no, spiegatemi lo stesso la query sottostante che mi interessa in ogni caso)?
In Access si usa iif al posto di CASE
___ iif(prezzo < 20 ; "Minore" ; "Maggiore" )
Ma tu devi fare questi conti in Access o SQL ?????
______ SQLServer ??????
__________________________________________________ _______
Originariamente inviato da reybluk
2) come faccio ad arrotondare un intero tipo: 101 -> 105 o 109->110
Questo è un po piu complicato,
Facci prima sapere se si tratta di Access o SQLServer o cosaltro
(
Sostanzialmente se vuoi che i tuoi prezzi siano 100 - 105 - 110 - 115 - ecc
devi:
__ dividere il tuo prezzo per 5
__ arrotondarlo con 0 decimali
__ rimoltiplicare il risultato per 5
)
__________________________________________________ ___________
La query qui sotto corrisponde alla tua un po rimaneggiata
( Vuoi applicare uno sconto dell'1% o dello 0.1% ??? )
codice:
UPDATE oggetto
SET prezzo =
CASE
WHEN (prezzo * (100 - 1) / 100) < 20 THEN (ROUND(prezzo * (100 - 1) / 100, 2))
WHEN (prezzo * (100 - 1) / 100) BETWEEN 20 AND 50 THEN (ROUND(prezzo * (100 - 1) / 100, 1))
WHEN (prezzo * (100 - 1) / 100) > 50 THEN (ROUND(prezzo * (100 - 1) / 100, 0))
END
WHERE ID=10;
___ Minore di 20 arrotonda con 2 decimali
___ Fra 20 e 50 compresi arrotonda con 1 decimale
___ Maggiore di 50 arrotonda con 0 decimali