2012-03-24 12 views
0

Ich versuche, die folgende AbfrageDatentyp-Konvertierungs

select distinct pincode as Pincode,CAST(Date_val as DATE) as Date, 
SUM(cast(megh_38 as int)) as 'Postage Realized in Cash', 
SUM(cast(megh_39 as int)) as 'MO Commission', 
from dbo.arrow_dtp_upg 
group by pincode,Date_Val 

aber ich erhalte eine Fehlermeldung „Fehler bei der Konvertierung, wenn der nvarchar Wert '82 .25' in dem Datentyp int zu konvertieren.“ Auszuführen

Benutzt ich einen falschen Datentyp?

Antwort

1

Die Zeichenfolge "82.25" steht für einen Gleitkommawert (oder eine Dezimalzahl) und nicht für eine Ganzzahl. Verwenden Sie daher cast(megh_38 as float), wenn Sie einen Gleitkommawert benötigen. Wenn Sie nur den ganzzahligen Teil benötigen, verwenden Sie floor(cast(megh_38 as float)).

+0

danke für die antwort Ich habe versucht mit float, aber ich bekomme 'Fehler beim Konvertieren von Datentyp nvarchar in float. Warnung: Nullwert wird durch eine Aggregat- oder andere SET-Operation eliminiert. ' als Fehler. – user87

+0

Einer Ihrer Werte ist NULL. Wenn Sie dies als Null behandeln wollen, verwenden Sie 'coalesce (floor (cast (megh_38 as float)), 0)'. – Phil

0

Sie konnten dieses versuchen:

cast(megh_38 as decimal(10,2)) 
cast(megh_39 as decimal(10,2)) 
0

Ein mögliches Problem ist Begrenzer (dot vs Komma). Fragen - warum bevorzugen Sie Nvarchar für Store Float oder int Werte? Vielleicht ist Dezimal oder Float bessere Lösung?