sql中case when的用法,提示“sum or average aggregate 运算不能以 varchar 数据类型作为参数。”

sum(casewhent1.sSC_Code='wb11'thent1.ssc_commentelsenullend)as应付保修日期,sum(casewhent1.s... sum(case when t1.sSC_Code='wb11' then t1.ssc_comment else null end) as 应付保修日期,
sum(case when t1.sSC_Code='wb12' then t1.ssc_comment else null end) as 应付首日期,
sum(case when t1.sSC_Code='wb13' then t1.ssc_comment else null end) as 应付二日期,
sum(case when t1.sSC_Code='wb14' then t1.ssc_comment else null end) as 应付尾日期,

我能理解提示,但是我不知道怎么修改,反正就是当sSC_Code='wb11'时,相应的ssc_comment作为一个字段名,大神大侠帮忙下
展开
 我来答
威威926
2015-01-13 · 超过10用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:18万
展开全部
sum(case when t1.sSC_Code='wb11' then t1.ssc_comment else null end) as 应付保修日期
你用的是sum函数啊 。。。sum是求和的啊,你用字符串求和?

去掉 sum() 就行了
追问

出现新问题

追答

看下我下面的例子,应该和你的目的是一样的了吧

使用Max函数进行最大化去重处理。

你的问题实际上是 纵向表转横向表 的一个过程


create table stu

(

id bigint,

name varchar(32),

age int

)

create table score

(

stu_id bigint,

kemu varchar(32),  --科目的名称

s int   --得分

)

insert into stu values (1, 'a', 20)

insert into stu values (2, 'b', 20)

insert into stu values (3, 'c', 20)


insert into score values (1, '语文', 80)

insert into score values (1, '数学', 85)

insert into score values (2, '语文', 50)

insert into score values (2, '数学', 60)

insert into score values (3, '语文', 70)

insert into score values (3, '数学', 90)



select stu.id, stu.name, stu.age,

  MAX(case score.kemu when '语文' then score.s else '0' end) as '语文',

  MAX(case score.kemu when '数学' then score.s else '0' end) as '数学'

from stu inner join score

on stu.id = score.stu_id

group by stu.id, stu.name, stu.age


飞冰鱼1
2015-01-13 · TA获得超过147个赞
知道小有建树答主
回答量:296
采纳率:80%
帮助的人:146万
展开全部
亲 字符串怎么做合啊?
更多追问追答
追问
错的,就是当当sSC_Code='wb11'时,相应的ssc_comment取到的值内容作为一个字段名,怎么写
追答
你能保证 你查到的数据 只有一条记录吗 你用相应的ssc_comment取到的值内容作为一个字段名 可行度 你觉得可以?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxd9915
2015-01-13 · TA获得超过299个赞
知道小有建树答主
回答量:461
采纳率:50%
帮助的人:209万
展开全部
你要SUM什么?
追问
不sum什么,目的是当sSC_Code='wb11'时,相应的ssc_comment取到的值内容作为一个字段名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
snow1013001897
2015-01-13
知道答主
回答量:9
采纳率:0%
帮助的人:3.6万
展开全部
还有就是这里不能用sum()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
twvampire
2015-01-13 · TA获得超过3620个赞
知道大有可为答主
回答量:3029
采纳率:76%
帮助的人:2966万
展开全部
没看明白,你这是要干什么,,,,
明明是日期,为什么要用sum(),,,,
sum是合计的,你合计日期要干什么,,,,
追问
对 是要日期,不用sum,用哪个?
追答
什么也不用不就可以了,,,,
应付保修日期=case when t1.sSC_Code='wb11' then t1.ssc_comment else null end
就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式