2016-05-26 20 views
1

なぜ次のクエリは10進数で値を返しませんか?私はCustRatingとRating Differenceカラムが10進数の値を返すことを望んでいました。クエリ結果が10進数の値を返しません

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 

これは[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" 

元のテーブルであるこれは、クエリの結果である:私はあなたの列が整数であると仮定し

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

あなたが選択する2番目の列がCustomerRateですが、結果の2番目の列はCustRatingさ... – jarlh

+0

は、なぜあなたがしていますCustNoとそれ以外にはテーブル自体に参加しませんか? – crowne

+0

このクエリでは16行が返されます(実際には曖昧な列エラーで失敗する)が、そのうち4つだけがゼロ差を示します。実際のクエリを表示し、テーブルDDLを追加してください。 – dnoeth

答えて

2

?このためにconvertを簡単に使用することができます。あなたが総取りたい場合は

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

データは「0.000000750」と表示されますが、これはどのように整数になりますか? – dnoeth

+0

笑。それは確かにかなり曖昧です。他の列には0が表示されます。 –

0

10桁と小数点以下3桁

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 
関連する問題