Warning: mysqli_query(): MySQL server has gone away in /www/wwwroot/aijiong.net/wp-includes/class-wpdb.php on line 2351

Warning: mysqli_query(): Error reading result set's header in /www/wwwroot/aijiong.net/wp-includes/class-wpdb.php on line 2351
class="wp-singular post-template-default single single-post postid-242120 single-format-standard custom-background wp-theme-m-site">

casesql语句


SQL语句中CASE有哪些用法

在写SQL语句时,或者是在PL/SQL中,经常需要在一个SQL语句中,根据不同的条件,有多种处理方法,如简单例子:出售一种商品时,单价不同,折扣不同,对这种需求的处理,如果分情况处理,将会很麻烦,如果用Case语句,就可以在一条SQL语句中得到想要的结果。

首先看一下,Case的语法: case when 条件A Then 结果A When 条件B 结果B 。

.. else 结果N end 和Decode 不同的是,Decode 只能针对固定的值,而 Case 可以用不是固定值,需是一个条件。 现在有以下的需求,有一个字符串,最后的两位可能是 ‘/R’ ,’/T’ 另外,有的后两位没有前面的’/R’ ,’/T’ ,现在针对不同的需要,要将 ‘/R’ ,’/T’ 取掉,没有 ‘/R’ ,’/T’, 就不做处理。

具体字符串如下: A01JCLA01JCL/GF117F0001TR/R SQL写法可以如下: select (case when instr(code, ‘/R’) > 0 then substr(code, 1, instr(code, ‘/R’) 1) when instr(code, ‘/T’) > 0 then substr(code, 1, instr(code, ‘/T’) 1) else ‘0’ end) from table_A t ; 使用Case时,要用括号括起来。

SQL语句中Case 的用法

不用CASE WHEN 的做法。源代码如下:

string sql=”select * from CONTACTPERSON ,CUSTOMER where CONTACTPERSONID='”+strContactid+”‘ and *ERID=*ERID”;

DataSet ds=new DataSet();

ds=*ommon(sql);

if(*[0].Rows[0][“CONTACTPERSONSEX”].ToString()==”0″)

{

*[0].Rows[0][“CONTACTPERSONSEX”]=”男”;

}

else

{

*[0].Rows[0][“CONTACTPERSONSEX”]=”女”;

}

使用CASE WHEN做法。

string sql=”select CUSTOMER.*,*TPERSONNAME,*TPERSONBIRTHDAY,*TPERSONPOSITION,*TPERSONDEPTNAME,”;

sql+=”*ONE,*,*,*CE,*DE,*Y,*,”;

sql+=”*OR,”;

sql+=”case when *TPERSONSEX = ‘0’then ‘男’ when *TPERSONSEX= ‘1’ then ‘女’ end as CONTACTPERSONSEX from CUSTOMER ,CONTACTPERSON where CONTACTPERSONID='”+strContactid+”‘ and *ERID=*ERID”;

可以看出这样明显加长了,SQL语句,这样做有什么好处呢?不太清楚,可能会提高效率吧。大家的看法呢?

sql语句case的用法

select case when stcd=’stcd’ and tm between ‘d1′ and convert(varchar(100),year(dateadd(day,1,’d1’)))

+”+convert(varchar(100),month(dateadd(day,1,’d1′)))

+”+convert(varchar(100),day(dateadd(day,1,’d1′)))

+’ 8:00:00′ then sum(drp) when stcd=’stcd’ and tm between convert(varchar(100),year(dateadd(day,1,’d1′)))

+”+convert(varchar(100),month(dateadd(day,1,’d1′)))

+”+convert(varchar(100),day(dateadd(day,1,’d1′)))

+’ 9:00:00′ and ‘d1’ then sum(drp) end drpsum from st_pptn_r你把’stcd’和’d1’换成具体值,试试看。

SQL语句case when

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

你看你的第一个case when语句(case when to_char(statistic_datepayrefdate>=0) and to_char(statistic_datepayrefdate<90) then sum(*envl(*fee,0)) else '' end)then后边返回的是一个求和,那么类型肯定是数字,而else分支,其他情况下居然返回了空字符串,字符型。这两个不一致,首先就错了。

你先改了这些吧。

SQL case when 语句

求总发卡数和总制卡数和发卡正式卡数、发卡临时卡数、发卡正式卡数,制卡临时卡数、制卡正式卡数(如Excel中所示)求详细SQL语句。

创建测试表

IF EXISTS (SELECT * FROM *s WHERE object_id = OBJECT_ID(N'[dbo].[TB]’) AND type in (N’U’))

DROP TABLE [dbo].[TB1]

GO

CREATE TABLE [dbo].[TB1](

[卡状态] [nvarchar] (20) NULL,

[卡类型] [nvarchar](50) NULL,

) ON [PRIMARY]

GO

插入测试数据

INSERT INTO [TB1] ([卡状态],[卡类型])

SELECT N’发卡’,N’正式卡’ UNION ALL

SELECT N’发卡’,N’正式卡’ UNION ALL

SELECT N’发卡’,N’临式卡’ UNION ALL

SELECT N’制卡’,N’临式卡’ UNION ALL

SELECT N’制卡’,N’正式卡’

GO

静态拼接行转列(纠正简化一下)

SELECT 卡状态 + ‘数’ AS 卡状态,

COUNT(1) AS 总数 ,

SUM(CASE WHEN 卡类型 = ‘正式卡’ THEN 1

ELSE 0

END) AS 正式卡 ,

SUM(CASE WHEN 卡类型 = ‘临式卡’ THEN 1

ELSE 0

END) AS 临式卡

FROM TB1

GROUP BY 卡状态

GO

输出结果:

sql语句中的Case如何使用

方法一:select (case TitleOfCourtesy when ‘Ms.’ then ‘女士’ when ‘Mr.’ then ‘男士’ else ” end) as TitleOfCourtesy from *ees方法二:select (case when TitleOfCourtesy = ‘Ms.’ then ‘女士’ when TitleOfCourtesy = ‘Mr.’ then ‘男士’ else ” end) as TitleOfCourtesy from *ees这是网上查的。

呵呵。

sql语句中的Case如何使用

方法一:

select (case TitleOfCourtesy when ‘Ms.’ then ‘女士’ when ‘Mr.’ then ‘男士’ else ” end) as TitleOfCourtesy from *ees

方法二:

select (case when TitleOfCourtesy = ‘Ms.’ then ‘女士’ when TitleOfCourtesy = ‘Mr.’ then ‘男士’ else ” end) as TitleOfCourtesy from *ees

这是网上查的。呵呵