SQL中case when 后加条件

SQL中case when 后加条件,第1张

CREATE TABLE A (

  A1  INT,

  A2  INT

)

CREATE TABLE B (

  B1  INT,

  B2  INT

)

CREATE TABLE C (

  C1  INT,

  C2  INT

)

GO

INSERT INTO A 

SELECT  1,    101  UNION  ALL

SELECT  2,    102  UNION  ALL

SELECT  3,    103  UNION  ALL

SELECT  4,    NULL UNION  ALL

SELECT  5,    NULL UNION  ALL

SELECT  11,   111  UNION  ALL

SELECT  12,   112  UNION  ALL

SELECT  13,   113  UNION  ALL

SELECT  14,   NULL UNION  ALL

SELECT  15,   NULL

INSERT INTO C 

SELECT  1,    301  UNION  ALL

SELECT  2,    302  UNION  ALL

SELECT  3,    303  UNION  ALL

SELECT  4,    304  UNION  ALL

SELECT  5,    305  UNION  ALL

SELECT  31,   311  UNION  ALL

SELECT  32,   312  UNION  ALL

SELECT  33,   313  UNION  ALL

SELECT  34,   314  UNION  ALL

SELECT  35,   315

INSERT INTO B

SELECT  1,  301  UNION  ALL

SELECT  2,  302  UNION  ALL

SELECT  3,  303  UNION  ALL

SELECT  4,  304  UNION  ALL

SELECT  5,  305  UNION  ALL

SELECT  21, 211  UNION  ALL

SELECT  22, 212  UNION  ALL

SELECT  23, 213  UNION  ALL

SELECT  24, 214  UNION  ALL

SELECT  25, 215

GO

 

SELECT

  case when A2 is null then B2

    else A2

  end AS W,

  case when A1 is null  and B2=C2 then C.C1

    else A1

  end AS E

from 

  C LEFT JOIN A ON (A.A1 = C.C1)

    JOIN B ON (B.B2 = C.C2)

W           E

----------- -----------

        101           1

        102           2

        103           3

        304           4

        305           5

(5 行受影响)

Case when语句能在SQL语句中织入判断逻辑,类似于Java中的if else语句。

CASE WHEN语句分为简单函数和条件表达式

1、简单函数。

CASE 字段 WHEN 预期值 THEN 结果1 ELSE 结果2 END

如果字段值等于预期值,则返回结果1,否则返回结果2。

2、条件表达式。

SQL CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句。

CASE子句可以用于任何表达式可以有效存在的地方。 condition 是一个返回boolean 的表达式。 如果结果为真,那么 CASE 表达式的结果就是符合条件的 result。

如果结果为假,那么以相同方式搜寻任何随后的 WHEN 子句。 如果没有 WHEN condition 为真,那么 case 表达式的结果就是在 ELSE 子句里的值。 如果省略了 ELSE 子句而且没有匹配的条件, 结果为 NULL。

CASE 字段 WHEN 预期值 THEN 结果1 ELSE 结果2 END

如果字段值等于预期值,则返回结果1,否则返回结果2。

1、case 字段 when 值 then 返回值 when 值2 then 返回值2 end。

2、case when 条件1 then 返回值1 when 条件2 then 返回值2 end。

case when then else end在平时写程序时非常常用,主要用来判断字段多状态的情况。其具体语法与使用方法如下:

case

when condition1 then result1

when condistion2 then result2

when condistionN then resultN

else default_result

end

该语句表示当条件满足condition1时,返回result1,后面n个条件同理,当条件都不满足时,返回default_result并结束。

你写的也太乱了吧,而且也没描述出想要什么效果?我给你改了一下你看看对不对。

CREATE

VIEW

ABC

as

slect

W=case

when

A2

is

null

then

B2

else

A2

end,

E=case

when

A1

is

null

then

C1

else

A1

end

from

A

join

C

on

A1=C1

join

B

on

C2=B2

或者简化一下,直接写:

CREATE

VIEW

ABC

as

slect

W=ISNULL(A2,B2),

E=ISNULL(A1,C1)

from

A

join

C

on

A1=C1

join

B

on

C2=B2


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

原文地址: http://outofmemory.cn/bake/11426442.html

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

发表评论

登录后才能评论

评论列表(0条)

保存