【问题标题】:Rounding in a case expression案例表达式中的舍入
【发布时间】:2020-03-16 23:55:23
【问题描述】:

我有一个案例状态,我想将回合应用于最终结果。该列是导入字符串。 21.16800000000000。我想让它四舍五入到 2。我尝试使用 Round(21.1680000000,2)。这个可以吗?

 SELECT   ITMMASTER.ITMREF_0,
          YPRIMAT.ITMREF_0,
          BASPRI_0,
          ITMMASTER.TSICOD_6,
           ITMMASTER.TCLCOD_0,
  (BASPRI_0*2.205+CASE
                 WHEN ITMMASTER.TCLCOD_0 = '32221'  --Multipying 2.205 times 
  1.25 (packaging per pound)
                       THEN '2.75625'
                 WHEN ITMMASTER.TCLCOD_0 = '32224' --Multipying 2.205 times 
  0.75 (packaging per pound)
                       THEN '1.65375'
                 WHEN ITMMASTER.TCLCOD_0 = '13221' --
                       THEN '2.75625'
                 WHEN ITMMASTER.TCLCOD_0 = '13241'
                       THEN '1.65375'
                 WHEN ITMMASTER.TCLCOD_0 = '36221'
                       THEN '6.7473'
                 WHEN ITMMASTER.TCLCOD_0 ='36224'
                       THEN '5.6448'
                 WHEN ITMMASTER.TCLCOD_0 = '41211'
                       THEN '1'
                 END) AS Importstring

  FROM LIVE.YPRIMAT
  INNER JOIN LIVE.ITMMASTER  ON YPRIMAT.ITMREF_0 = ITMMASTER.ITMREF_0

【问题讨论】:

  • 为什么要乘以字符串,例如'1'?使用数字是否更有意义,例如1?什么是“案例状态”? TSQL 确实有一个case 表达式

标签: sql sql-server tsql select rounding


【解决方案1】:

你可以用round()包围表达式:

round(baspri_0_2 * 2.205 + case .. end, 2) as ImportString

或者,可能更好,您可以将cast() 转换为有两位小数的小数:

cast(baspri_0_2 * 2.205 + case .. end as decimal(30, 2)) as ImportString

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多