2016-05-26 23 views
1

Warum gibt die folgende Abfrage Werte nicht in Dezimal zurück? Ich wollte, dass die Spalte "CustRating and Rating Difference" die Werte in Dezimal zurückgibt.Abfrageergebnis gibt keine Werte in Dezimal zurück

SELECT 
    a.CustNo AS CustNo, 
    a.CustRating AS CustomerRate, 
    a.RatingDate AS RatingDate, 
    (a.CustRating-b.CustRating) AS [Rating Difference] 
FROM 
    MasterTable a 
      JOIN MasterTable b ON b.CustNo = a.CustNo 
ORDER BY 
    CustNo 

Dies ist die Original-Tabelle [MasterTable]

CustNo CustRating RatingDate 
101AAA 0.000500000 "2016-01-08 00:00:00.000" 
101AAA 0.000000750 "2016-01-12 00:00:00.000" 
101AAA 0.000000550 "2016-01-22 00:00:00.000" 
101AAA 0.000000000 "2016-01-27 00:00:00.000" 

Dies ist das Ergebnis der Abfrage:

CustNo CustRating RatingDate     Rating Difference 
101AAA 0   "2016-01-08 00:00:00.000" 0 
101AAA 0   "2016-01-12 00:00:00.000" 0 
101AAA 0   "2016-01-22 00:00:00.000" 0 
101AAA 0   "2016-01-27 00:00:00.000" 0 
+0

Die zweite Spalte, die Sie wählen ist CustomerRate nehmen wollen, aber die zweite Spalte Ergebnis wird CustRating ... – jarlh

+0

Warum sind Sie verbinde den Tisch gegen sich auf CustNo und nichts anderes? – crowne

+0

Diese Abfrage gibt 16 Zeilen zurück (tatsächlich sollte sie mit einem mehrdeutigen Spaltenfehler fehlschlagen), aber nur 4 von ihnen zeigen eine Nulldifferenz. Bitte zeigen Sie die tatsächliche Anfrage und fügen Sie die Tabelle DDL hinzu. – dnoeth

Antwort

2

ich Ihre Spalte übernehmen eine ganze Zahl ist? Sie können Convert dafür leicht verwenden.

CONVERT(decimal(9,2), a.CustRating) AS CustomerRate, 
CONVERT(decimal(9,2), a.CustRating - b.CustRating) as RatingDifference 
+0

Die Daten zeigen '0.000000750', wie kann das eine ganze Zahl sein? – dnoeth

+0

lol. Nun, es ist ziemlich vage. In den anderen Spalten wird 0 angezeigt. –

0

Wenn Sie insgesamt 10 Stellen und 3 Nachkommastelle

SELECT a.CustNo AS CustNo , 
     CAST(a.CustRating as decimal(10,3)) AS CustomerRate, 
     a.RatingDate AS RatingDate, 
     CAST((a.CustRating-b.CustRating) as decimal(10,3)) AS [Rating Difference] 
FROM MasterTable a 
JOIN MasterTable b 
ON b.CustNo = a.CustNo 
ORDER BY CustNo 
Verwandte Themen