如何在SQL查询的结果上保留两位小数?

时间:2018-12-05 06:39:13

标签: sql sql-server

这是我的代码。

 SELECT SUM(receivables) AS [Trans-January], 
        (SELECT SUM(receivables)
         FROM tbl_customerInfo 
         WHERE invalid = 'valid'
            AND YEAR(currentDate) = '2017'
            AND MONTH(currentDate) = '02'
            AND paid = 1) AS [Coll-January],
      (((SELECT SUM(receivables)
         FROM tbl_customerInfo
         WHERE invalid = 'valid'
            AND YEAR(currentDate) = '2017'
            AND MONTH(currentDate) = '02'
            AND paid = 1) / 
        (SELECT SUM(receivables)
         FROM tbl_customerInfo
         WHERE invalid = 'valid'
            AND YEAR(currentDate) = '2017'
            AND MONTH(currentDate) = '02')) *100) AS [Coll - january]
FROM tbl_customerInfo
WHERE invalid = 'valid'
AND YEAR(currentDate) = '2017'
AND MONTH(currentDate) = '02'

我得到

的结果

<table border = 1>
<thead>
<th>Trans - January</th>
<th>Coll - January</th>
<th>January %</th>
</thead>
<tbody>
<tr>
<td>598641.25</td>
<td>6523.21</td>
<td>1.089669313633165</td>
</tr>
</tbody>
</table>

我如何使一月%列中的结果仅显示小数点后4位? (xxxxx.xxxx)

此外,您可以帮助我改善代码吗?我将从一月到十二月获得所有这三列。简而言之,总共36列。

1 个答案:

答案 0 :(得分:0)

有多种方法可以简化此代码-但对于小数位-以下内容使用Format函数获得4位小数位。 (您的标题说2位小数,但您的注释说4位)。

Declare @currentDate Date
Set @currentDate = '2017-02-25'  --GetDate()

 SELECT 
   SUM(receivables) AS [Trans-January], 

       (SELECT SUM(receivables)
         FROM tbl_customerInfo 
         WHERE invalid = 'valid'
            AND YEAR(@currentDate) = '2017'
            AND MONTH(@currentDate) = '02'
            AND paid = 1) AS [Coll-January],
Format(
      (((SELECT SUM(receivables)
         FROM tbl_customerInfo
         WHERE invalid = 'valid'
            AND YEAR(@currentDate) = '2017'
            AND MONTH(@currentDate) = '02'
            AND paid = 1) / 
        (SELECT SUM(receivables)
         FROM tbl_customerInfo
         WHERE invalid = 'valid'
            AND YEAR(@currentDate) = '2017'
            AND MONTH(@currentDate) = '02')) *100) 
,'N4')  AS [January]

FROM tbl_customerInfo
WHERE invalid = 'valid'
AND YEAR(@currentDate) = '2017'
AND MONTH(@currentDate) = '02'