Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Case when ??
lunedì 14 aprile 2008 - 08.25
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Pongo
Profilo
| Senior Member
274
messaggi | Data Invio:
lun 14 apr 2008 - 08:25
Ciao a tutti!
Non riesco a fare una cosa con un unico passaggio di sql.
Ho questa query:
select MP.nodo, count(*) as 'Numero Pagamenti', sum (importopagamento-resto)as Incassato, MP.valuta
from movimentipagamenti as MP
inner join movimentitestate as MT on
(MP.nodo=MT.nodo and MP.anno=MT.anno and MP.numero=MT.numero and
MP.tipo=MT.tipo)
where MP.tipo='s1'
and MT.data>'20080401'
and MT.annullato='0'
group by MP.nodo, MP.valuta
order by Incassato desc;
e mi ritorna i dati dell'incassato dei negozi nella valuta della nazione.
Io vorrei, a seconda della valuta avere un risultato diverso di Incassato. Per esempio se la valuta è 'DKK' incassato=incassato/7.5.
Ho provato con il declare di una variabile, ma se inizializzo la variabile con una select, poi non posso fare null'altro in quella select.
Come potrei fare??
per farvi capire meglio:
001 1900 EUR
002 170000 DKK
Vorrei che diventasse
001 1900 EUR
002 (170000/7.5) EUR
Ciao!
amelix
Profilo
| Expert
694
messaggi | Data Invio:
lun 14 apr 2008 - 08:32
Domanda: hai una tabella valuta o il case when del subject deve farlo al posto tuo?
Se è vera la prima ... perfetto!
Altrimenti malissimo!!!
A.
Andrea -
http://www.MelisWeb.eu/
CMS -
http://www.WebOrama.it/
Pongo
Profilo
| Senior Member
274
messaggi | Data Invio:
lun 14 apr 2008 - 08:37
>Domanda: hai una tabella valuta o il case when del subject deve
>farlo al posto tuo?
>Se è vera la prima ... perfetto!
>Altrimenti malissimo!!!
>
Ciao! In che senso una tabella valuta?? Valuta è un campo che ho nella tabella movimentipagamenti, una delle due tabelle messe in join.
SQL può per ogni riga della select "capire" il contenuto di una cella e cambiare il contenuto di una cella successiva??
Il problema è questo.
BEGIN
/* Dichiaro la variabile */
DECLARE @Valuta AS varchar(3)
/* Inizializzo la variabile */
SET @Valuta = ''
/* Recupero il valore e lo assegno con una istruzione SELECT */
SELECT @Valuta=MP.valuta
from movimentipagamenti as MP
inner join movimentitestate as MT on
(MP.nodo=MT.nodo and MP.anno=MT.anno and MP.numero=MT.numero and
MP.tipo=MT.tipo)
where MP.tipo='s1'
and MT.data>'20080401'
and MT.annullato='0'
group by MP.nodo, MP.valuta
--order by Incassato desc;
print
@valuta
END
Usando questa beging end becco il valore della valuta, ma a chi lo do in pasto??
AndreaKpr
Profilo
| Senior Member
265
messaggi | Data Invio:
lun 14 apr 2008 - 08:57
Ciao, prova cosi
>>SELECT MP.nodo, count(*) as 'Numero Pagamenti', MP.valuta,
>> CASE WHEN (MP.valuta = 'DKK') THEN ((sum (importopagamento-resto)) / 7.5) ELSE (sum (importopagamento-resto)) AS Incassato
>>FROM movimentipagamenti inner join movimentitestate on
>>(MP.nodo=MT.nodo and MP.anno=MT.anno and MP.numero=MT.numero and MP.tipo=MT.tipo)
>>WHERE MP.tipo='s1' and MT.data>'20080401' and MT.annullato='0'
>>GROUP BY MP.nodo, MP.valuta
>>ORDER BY Incassato desc;
>>CASE WHEN Disabilitato=1 THEN 'NO' ELSE 'SI' END AS Abil FROM Agenti WHERE (Tipo = 'Agente') ORDER BY CodiceAgente"
Non l'ho potuta provare, per ovvi motivi, ma per problemi simili ho fatto sempre cosi...
Ziao!
Pongo
Profilo
| Senior Member
274
messaggi | Data Invio:
lun 14 apr 2008 - 09:05
PErfetto, grazie mille!!!
Mancava solo End alla fine del case!
select MP.nodo, count(*) as 'Numero Pagamenti', MP.valuta,
CASE MP.valuta
WHEN 'DKK'
THEN ((sum (importopagamento-resto)) / 7.5)
WHEN 'UFL'
THEN ((sum (importopagamento-resto)) / 250)
ELSE (sum (importopagamento-resto))
END
AS Incassato
from movimentipagamenti as MP
inner join movimentitestate as MT on
(MP.nodo=MT.nodo and MP.anno=MT.anno and MP.numero=MT.numero and
MP.tipo=MT.tipo)
where MP.tipo='s1'
and MT.data>'20080401'
and MT.annullato='0'
group by MP.nodo, MP.valuta
order by Incassato desc;
Ciao!!!
AndreaKpr
Profilo
| Senior Member
265
messaggi | Data Invio:
lun 14 apr 2008 - 09:17
Bene, sono contento che funzioni...
Pardon per l'end finale
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !