【发布时间】:2010-12-29 18:12:15
【问题描述】:
我有 5 个 case 语句(仅显示 2 个 case 语句)。
SELECT DISTINCT
CASE [GRADE1]
when 1 then 1
when 2 then 3
when 3 then 5
when 4 then 7
when 5 then 9
End as Q1,
CASE [GRADE2]
when 1 then 1
when 2.3 then 3
when 3.33 then 5
when 4.67 then 7
when 1 then 9
End as Q2
FROM abcd
这里我试图将值放在临时表中,我需要在以后的选择语法中映射
SELECT a,b
INTO #Temp_Q
FROM xyz
WHERE [ds]= 'Data'
select distinct t.[b] as [Q]
from abcd s
left join #Temp_Q t on s.[GRADE1] = t.[a]
s.[GRADE2] = T.[a]
我被要求编写代码,而不是对所有这些值进行硬编码。
现在我收到错误.. 而且不知道如何转换。 [GRADE2] (FLOAT,NULL) 是列中分配的数据类型。
消息 245,第 16 级,状态 1,第 14 行 将 varchar 值“1.33”转换为数据类型 int 时转换失败。
【问题讨论】:
-
表xyz和表abcd的数据类型是什么?您需要在原始表或查询中将所有数据类型转换为十进制。顺便说一句,永远不要将浮点数用于您打算进行计算的事情,它会产生舍入错误。