簡體   English   中英

如何更正此 T-SQL 語法以獲得沒有小數位的輸出?

[英]How to correct this T-SQL syntax to get an output with no decimal places?

我正在使用 SQL Server 2016 並且我的查詢中有以下 T-SQL 代碼:

CAST(ROUND([Count of Bookings] * 100.0 / SUM([Count of Bookings]) OVER (PARTITION BY [Market Final], [PropertyCode]), 0) AS NVARCHAR(15)) + '%'

此代碼當前輸出的示例是:40.000000000000%

我期望輸出為:40%

作為說明(我不知道這是否相關):如果我將nvarchar(x)的數字更改為低於 15,則會出現以下錯誤:

將表達式轉換為數據類型 nvarchar 時出現算術溢出錯誤。

使用str()而不是cast()

str(round([Count of Bookings] * 100.0 /
          sum([Count of Bookings]) over(PARTITION BY [Market Final], [PropertyCode]
         ) , 0), 3, 0)  + '%'

實際上,我認為str()默認情況下是str()文檔對這個主題可能不太清楚嗎?):

str([Count of Bookings] * 100.0 /
    sum([Count of Bookings]) over (PARTITION BY [Market Final], [PropertyCode]
                                  ), 3, 0)  + '%'

ROUND()函數的任何輸入的返回類型取決於輸入數據類型,如您在MSDN 上所見。

這會導致您的ROUND()返回帶有小數點的數據類型(在此計算中為float ),您必須在轉換為nvarchar后截斷該數據類型(或之前將其轉換為int )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM