Sql 计算一行中小数四舍五入到2位的值的百分比

Sql 计算一行中小数四舍五入到2位的值的百分比,sql,select,casting,decimal,rounding,Sql,Select,Casting,Decimal,Rounding,我有一个查询,它为我提供了列中空值的百分比: SELECT Count(*) FROM XYZ_Referrals WHERE referral_source IS NULL ) * 100.0 / ( Select Count(*) From XYZ_Referrals ) as 'referral source fields that are populated' 但是,我需要将该值四舍五入并截断到小数点后2位。以下查询循环,但不截断: SELECT

我有一个查询,它为我提供了列中空值的百分比:

SELECT
  Count(*)
FROM
  XYZ_Referrals
WHERE
  referral_source IS NULL
) * 100.0 / (
  Select
    Count(*)
  From
    XYZ_Referrals
) as 'referral source fields that are populated'
但是,我需要将该值四舍五入并截断到小数点后2位。以下查询循环,但不截断:

SELECT
  Round
    (
        (
            (
                SELECT
                    Count(*)
                FROM
                    XYZ_Referrals
                WHERE
                    referral_source IS NULL
            )
        * 100.0 / Count(*)
        ),2,2
    )
    as 'referral source fields that are populated'
FROM
  XYZ_Referrals
返回的值为5.60000000000

我试过投,但没有成功

SELECT
    (
        Cast
            (
                Round
                    (
                        (
                            (
                                SELECT
                                    Count(*)
                                FROM
                                    XYZ_Referrals
                                WHERE
                                    referral_source IS NULL
                            )
                            * 100.0 / Count(*)
                        )
                    ),2
                AS DECIMAL(3,2)
            )
    )
    as 'referral source fields that are populated'
FROM
  XYZ_Referrals

非常感谢您的帮助。

您的思路正确,但小数点的精度不正确:

SELECT CAST(5.600000000000 AS DECIMAL(10, 2))
这会将数字转换为10位精度,小数点后2位