【发布时间】:2015-07-07 21:30:49
【问题描述】:
当我选择表格时
Select
[Premium Amount], [Policy Number],
[Transaction Type Code], Insured, *
from
DW.Table
where
[Policy Number] in ('1111111111', '2222222222')
这些是结果。
Premium Amount Policy Number Transaction Type Code Insured
-12798.0000 1111111111 Cancellation ABC Group
27000.0000 1111111111 Renewal Business ABC Group
-8452.7700 2222222222 Cancellation DEF Group
10221.0000 2222222222 Renewal Business DEF Group
我想要创建两个新列,[Original Policy Premium] 和 [Transaction Premium]。
[Original Policy Premium] 是一列,其中包含交易类型代码 = 续保业务,它将导致对应的 保费金额 = 27000.0000 保单编号 111111111。同样适用于保单编号 22222222。
让它看起来像这样。
Original Policy Premium Transaction Premium Policy Number
27000.0000 -12798.0000 1111111111
10221.0000 -8452.7700 2222222222
Select
case
when [Transaction Type Code] = 'Renewal Business'
then [Premium Amount]
else ''
end as [Original Policy Premium],
case
when [Transaction Type Code] = 'Cancellation'
then [Premium Amount]
else ''
end as [Transaction Premium],
[Policy Number],
[Transaction Code]
from
DW.Table
where
[Policy Number] in ('111111111', '22222222')
但运行后出现此错误。
消息 8114,第 16 级,状态 5,第 1 行
将数据类型 varchar 转换为数值时出错。
但是当我用 END AS NULL 替换 END as '' 时
Original Policy Premium Transaction Premium Policy Number
27000.0000 NULL 1111111111
NULL -12798.0000 1111111111
10221.0000 NULL 2222222222
NULL -8452.7700 2222222222
【问题讨论】:
-
更改为
else null -
谢谢。你的答案是正确的。但请看我的编辑。
标签: sql-server