金融其它商业智能

大家帮忙看看这个语句哪里出问题?

case
when [report].[XXCARD_STAT_2].[TYPE]='5' then
cast(_round([report].[XXCARD_STAT_2].[发卡量]*100,2),varchar(10))+'%'
else [report].[XXCARD_STAT_2].[发卡量]
end

cognos报错:语句中存在不兼容数据类型
发卡量字段中存的是带小数数字
参与11

10同行回答

linpanjslylinpanjsly数据库管理员IBM
如果真的实现不了类型转换.可以用一个render variable动态显示%,以及把你想要的数据的类型变成text形式.显示全部
如果真的实现不了类型转换.可以用一个render variable动态显示%,以及把你想要的数据的类型变成text形式.收起
互联网服务 · 2011-05-12
浏览595
慕名而来慕名而来软件开发工程师中科软
报数据类型不统一,那应该是8楼说的原因.显示全部
报数据类型不统一,那应该是8楼说的原因.收起
政府机关 · 2011-05-11
浏览605
hubeiliubinhubeiliubin软件开发工程师惠州市惠城区环城西路柏子树下66号
你把两个都转成字符串看看行不行?显示全部
你把两个都转成字符串看看行不行?收起
政府机关 · 2011-05-11
浏览598
jieleejielee软件开发工程师top
casewhen [report].[XXCARD_STAT_2].[TYPE]='5' then cast(_round([report].[XXCARD_STAT_2].[发卡量]*100,2),varchar(10))+'%' --字符串else[report].[XXCARD_STAT_2].[发卡量]                    ...显示全部
case
when [report].[XXCARD_STAT_2].[TYPE]='5' then
cast(_round([report].[XXCARD_STAT_2].[发卡量]*100,2),varchar(10))+'%' --字符串
else
[report].[XXCARD_STAT_2].[发卡量]                                             --数值
end

会不会是这个问题?可以在ELSE后加个cast

如果不行,建议:

先不要用case

先把两个值,分别做为一个数据项,测一下,看是不是函数错了,或者是具体哪个函数的参数错了……收起
政府机关 · 2011-05-11
浏览663
jbymy2000jbymy2000软件开发工程师App Annie
一段段测试代买就能看出问题了。显示全部
一段段测试代买就能看出问题了。收起
互联网服务 · 2011-05-11
浏览589
jeongspearjeongspear其它华腾软件
我试了一下 直接转成 varchar(20),也报错:语句中存在不兼容数据类型cast([report].[XXCARD_STAT_2].[发卡量]*100  as varchar(20))晕掉了,它死活不让我转成字符型显示全部
我试了一下 直接转成 varchar(20),也报错:语句中存在不兼容数据类型

cast([report].[XXCARD_STAT_2].[发卡量]*100  as varchar(20))
晕掉了,它死活不让我转成字符型收起
金融其它 · 2011-05-11
浏览607
jeongspearjeongspear其它华腾软件
我试过了~~casewhen [report].[XXCARD_STAT_2].[TYPE]='5' then cast([report].[XXCARD_STAT_2].[发卡量]*100 as decimal(10,2)) else [report].[XXCARD_STAT_2].[发卡量]end上面没有语法错误,再加一层cast 就报错:语句中存在不兼容数据类型(代码如下)casewhen [report].[X...显示全部
我试过了~~
case
when [report].[XXCARD_STAT_2].[TYPE]='5' then
cast([report].[XXCARD_STAT_2].[发卡量]*100 as decimal(10,2))
else [report].[XXCARD_STAT_2].[发卡量]
end

上面没有语法错误,再加一层cast 就报错:语句中存在不兼容数据类型(代码如下)

case
when [report].[XXCARD_STAT_2].[TYPE]='5' then
cast(cast([report].[XXCARD_STAT_2].[发卡量]*100 as decimal(10,2)) as varchar(20))
else [report].[XXCARD_STAT_2].[发卡量]
end收起
金融其它 · 2011-05-11
浏览633
linpanjslylinpanjsly数据库管理员IBM
两种不同的结果一个cast.另外一个没有cast.是不是这里的问题.都cast试试呢显示全部
两种不同的结果一个cast.另外一个没有cast.是不是这里的问题.都cast试试呢收起
互联网服务 · 2011-05-11
浏览611
jeongspearjeongspear其它华腾软件
回复 2# macherater     cognos 语法是这样的显示全部
回复 2# macherater


    cognos 语法是这样的收起
金融其它 · 2011-05-11
浏览618
macheratermacherater软件开发工程师塔塔信息技术中国公司
(_round([report].[XXCARD_STAT_2].[发卡量]*100,2),楼主,,,你round 之前,干嘛有个下划线。。。。显示全部
(_round([report].[XXCARD_STAT_2].[发卡量]*100,2),

楼主,,,你round 之前,干嘛有个下划线。。。。收起
互联网服务 · 2011-05-11
浏览620

提问者

jeongspear
其它华腾软件

相关问题

相关资料

问题状态

  • 发布时间:2011-05-11
  • 关注会员:1 人
  • 问题浏览:3873
  • 最近回答:2011-05-12
  • X社区推广