sql 的case when 语句

sql 的case when 语句,第1张

case

when应该是select或者是where条件的一部分,你这里,case

when部分没有在任何一个地方,而且,你这个很明显,应该是select里面的一部分,作为查询的一个结果列。

所以,要在from前。

还有,when后边是没有逗号的。

最后,还需要end关键字表示结束。

Select

prevent_Seep,

Case

when

length(prevent_Seep)

=

1

then

‘无’

When

length(prevent_seep)

=

2

then

‘有’

When

length(prevent_seep)

>

2

then

substring(prevent_seep,2,length(prevent_seep))

end

as

别名

from

Table_F301(2)

太长了,但是看到一个问题,case when,要求返回的类型必须一直。

你看你的第一个case when语句

(case when to_char(statistic_date-payrefdate>=0) and to_char(statistic_date-payrefdate<90) then sum(aplanfee-nvl(cpayreffee,0)) else '' end)

then后边返回的是一个求和,那么类型肯定是数字,而else分支,其他情况下居然返回了空字符串,字符型。这两个不一致,首先就错了。你先改了这些吧。

select case when type = 1 then ‘正常’ when type = 0 then ‘暂停’ else '' end as '状态'

from proudct ;

给C#没关系,ACCESS不支持when case 语句,如果数据量不是特别大的话可以把查询到的结果在上层处理下。实在想用SQL语句解决问题,ACCESS有个IFF函数有类似功能,可以百度下。

select 课程,

sum(case when 姓名='李四' then 成绩 end)as '李四',

sum(case when 姓名='张三' then 成绩 end)as '张三'

from table_2

group by 课程

--意思是:

查询结果按照“课程”、“李四的成绩”、“张三的成绩”显示出来,

其中“李四的成绩”计算方法是:

当姓名=李四,那么就计算将该行的成绩按照课程进行分类加总

“张三的成绩”计算方法是:

当姓名=张三,那么就计算将该行的成绩按照课程进行分类加总

select 姓名,

sum(case when 课程='语文' then 成绩 end)as '语文',

sum(case when 课程='数学' then 成绩 end)as '数学',

sum(case when 课程='英语' then 成绩 end)as '英语'

from table_2

group by 姓名

--类似的意思是:

查询结果按照“姓名”、“语文”、“数学”、“英语”按照姓名进行加总各科成绩显示出来,

其中“语文”成绩计算方法是:

当科目=语文,那么就计算将该行的成绩按照姓名进行分类加总

“数学”成绩计算方法是:

当科目=数学,那么就计算将该行的成绩按照姓名进行分类加总

“英语”成绩计算方法是:

当科目=英语,那么就计算将该行的成绩按照姓名进行分类加总

case when 条件 then 表达式1 else 表达式2 end

表示:当条件成立,则返回表达式1,否则返回表达式2

因此:sum(case when 姓名='李四' then 成绩 end)as '李四', 表示如果姓名为李四,则加总计算成绩,列名为‘李四’

类似的楼主可以自己理解了。

把括号去掉就好了。

下面是case的两种用法,可以看下 :

1 使用带有 CASE 简单表达式的 SELECT 语句。

在 SELECT 语句中,CASE 简单表达式只能用于等同性检查,而不进行其他比较。下面的示例使用 CASE 表达式更改产品系列类别的显示,以使这些类别更易于理解。

USE AdventureWorks2008R2;

GO

SELECT   ProductNumber, Category =

CASE ProductLine

WHEN 'R' THEN 'Road'

WHEN 'M' THEN 'Mountain'

WHEN 'T' THEN 'Touring'

WHEN 'S' THEN 'Other sale items'

ELSE 'Not for sale'

END,

Name

FROM ProductionProduct

ORDER BY ProductNumber;

GO

2 使用带有 CASE 搜索表达式的 SELECT 语句

在 SELECT 语句中,CASE 搜索表达式允许根据比较值替换结果集中的值。下面的示例根据产品的价格范围将标价显示为文本注释。

USE AdventureWorks2008R2;

GO

SELECT   ProductNumber, Name, 'Price Range' =

CASE

WHEN ListPrice =  0 THEN 'Mfg item - not for resale'

WHEN ListPrice < 50 THEN 'Under $50'

WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'

WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'

ELSE 'Over $1000'

END

FROM ProductionProduct

ORDER BY ProductNumber ;

GO

以上就是关于sql 的case when 语句全部的内容,包括:sql 的case when 语句、SQL语句case when、SQL 的CASE 语句应该怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9362280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存