Excel

EXCEL 和 TERADATA SQL 中的不同計算

  • September 21, 2018

Teradata Sql 中的計算select (75/979.86)*979.86結果為 78.3888。在 excel 中,它會簡單地給出 75,這在邏輯上是正確的。我知道 SQL 將 75/979.86 舍入為 0.08,即 979.86 中的小數位數。因此結果是不同的。所以,我可以簡單地做 (75*979.86)/979.86 並得到結果。但是有沒有辦法通過更改數據類型或四捨五入來完全匹配這些?

Teradata 在每次計算後根據結果數據類型(標準 SQL 兼容)進行四捨五入,為了獲得預期的結果,您可以將第一個操作數轉換為 NUMBER(無需考慮精度),最後返回 DECIMAL:

Cast((Cast(75 AS NUMBER)/979.86) *979.86 AS DECIMAL(10,2))

Ot您重新排列計算順序以先乘然後除:

979.86 * 75 / 979.86

所以,這就是我所做的。我們可以使用 cast as( number as decimal(18,5)) 之類的東西將數字的數據類型轉換為 5 個十進制數字。然後,再次使用 cast 和十進制位數一樣,我們需要將結果四捨五入,在我的例子中是 2。所以,像這樣

select cast((cast(75 as decimal(18,5))/cast(979.86 as decimal(18,5)))*cast(979.86 as decimal(18,5)) as decimal(18,2)) ;

我們可以增加小數位以增加我們喜歡的精度,但也要小心“數字溢出”錯誤

引用自:https://dba.stackexchange.com/questions/218277