这是我的代码。
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列。
答案 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'