Itruzione sum in sql con formattazione

martedì 14 dicembre 2004 - 20.15

trinity Profilo | Guru

ragazzi io ho eseguito questa istruzione sql che funziona benissimo:

INSERT INTO stampa_totvalori
(valore_1) select sum(articoli.prezzoacquisto) from articoli

solo che il record articoli.prezzoacquisto contiene dei valori in euro e quindi dei decimali, se io utilizzo l'istruzione sql che vi ho appena postato se ci sono i seguenti valori:(5,00 - 33,33 - 10,00) come risulato mi esce 48 anzichè 48,33...come posso formattare il campo articoli.prezzoacquisto tenendo presente che un campo varchar di mysql?

Ciao
Fabio

Brainkiller Profilo | Guru

Ciao Trinity,
immagino che anche in MySQL ci siano istruzioni come la CONVERT o la CAST di SQL Server per convertire i valori.
Inoltre se fai la somma di numeri, perchè li vai ad inserire in un campo varchar ?

ciao
david

trinity Profilo | Guru

Il discorso è che utilizzo il campo varchar perchè essendo valori in formato euro è l'unico modo per poter visualizzare i decimali (es: €. 30,56) ho provato il decimal, double e il numeric di mysql ma niente..o almeno io non ci sono riuscito...se hai qualche esempio da farmi vedere anche sul convert te ne sarei grado..

Ciao
Fabio

Brainkiller Profilo | Guru

Il decimal o il currency dovrebbero andare bene trattandosi di euro.
Poi dipende anche come lo formatti con .NET, prova con .ToString("C")

ciao
david

trinity Profilo | Guru

Il discorso è proprio sul record di mysql che io gli passo un valore del tipo 30,56 e mi salva solo 30 se uso il campo decimal oppure double...se utilizzo il campo float i dati devono essere salvati con il punto anzichè la virgola così 33.33 ma non mi ricordo la formattazione dal valore 33,33 che visualizzo sulla form al valore 33.33 da passare a mysql, perchè se lascio così cioè con la virgola non mi salva nel modo corretto ma bensì cos' 33

Ti ricordi il tipo di formattazione che devo utilizzare per passare da 33,33 a 33.33

Ciao
Fabio

ysdemarc Profilo | Expert

Ciao,
ma hai provato a costruire la query col valore numerico?
cioe se in una text hai 33,33 prima convertilo in double e poi costruisci la query usando quest'ultimo di valore... oltretutto immagino che già userai una classe o routine per il controllo di ciò che è stato immesso nei campi.
In questo modo puoi usare campi decimal e non varchar nel db.
L'esecuzione dei comandi sum avg ecc... rallentano le query e di molto poichè per ogni singola riga il dbms deve convertire prima il valore e poi sommarlo... e se poi hai inserito qualche lettera.....

ysdemarc Profilo | Expert

comunque se non converti in numerico per cambiare i punti in virgola puoi usare la Replace

trinity Profilo | Guru

Si come dici te ci ho provato ma proprio il db di mysql non mi accetta la vrgola nel double, cmq con il replace sapevo che potevo convertire..

Grazie dell'aiuto

Ciao
Fabio
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5