【发布时间】:2017-04-12 14:45:59
【问题描述】:
我使用 SUM 和 case 表达式来生成 2 个聚合值,然后我想将这 2 个数字相除以计算百分比。
我已尝试转换所有语句,但我不断收到错误:
消息 8117,第 16 级,状态 1,第 4 行 除法运算符的操作数数据类型 varchar 无效。
我很困惑它将第三个条件读取为 varchar - 我尝试将其转换为 Integer 和 Decimal,但收到相同的错误。这是我正在使用的代码:
SELECT
cast(SUM(case when Patient_Ethnic_Origin_Code = '99' then 1 end) as INTEGER)'Not Known'
, cast(SUM(case when Patient_Ethnic_Origin_Code IS NOT NULL then 1 end)as INTEGER)'All'
, cast('Not Known'/'All' as DECIMAL (10,2)) 'Calculation'
我也尝试过使用不同的方法,但这也给出了同样的错误:
SELECT
'NotKnown'
,'All'
,'NotKnown' / 'All' as 'Calculation'
(SELECT
cast(SUM(case when Patient_Ethnic_Origin_Code = '99' then 1 end) as INTEGER)as 'NotKnown'
, cast(SUM(case when Patient_Ethnic_Origin_Code IS NOT NULL then 1 end)as INTEGER)as 'All'
FROM Inpatients.vw_IP_Spells
WHERE Discharge_Date BETWEEN '01/01/2017' AND '31/01/2017'
AND Admission_Method_National_Code LIKE '2%'
AND Patient_Ethnic_Origin_Code != 'Z'
)
谁能告诉我我的语法哪里出错了?
【问题讨论】:
标签: sql-server-2008 tsql