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语句。
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)