sql中case when的用法,提示“sum or average aggregate 运算不能以 varchar 数据类型作为参数。”
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作为一个字段名,大神大侠帮忙下 展开
你用的是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
错的,就是当当sSC_Code='wb11'时,相应的ssc_comment取到的值内容作为一个字段名,怎么写
你能保证 你查到的数据 只有一条记录吗 你用相应的ssc_comment取到的值内容作为一个字段名 可行度 你觉得可以?
不sum什么,目的是当sSC_Code='wb11'时,相应的ssc_comment取到的值内容作为一个字段名
明明是日期,为什么要用sum(),,,,
sum是合计的,你合计日期要干什么,,,,
对 是要日期,不用sum,用哪个?
什么也不用不就可以了,,,,
应付保修日期=case when t1.sSC_Code='wb11' then t1.ssc_comment else null end
就可以了