请教casecase when 嵌套select的用法问题

& & Oracle SQL嵌套CASE WHEN& & 尝试了一下,Oracle CASE WHEN 是可以支持嵌套使用的。& & 虽然看起来比较恶心,但是还是挺有用的。& & Sql代码& & select case& & when (1 = 1) then& &……
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程Oracle SQL嵌套CASE WHEN
SQL嵌套CASE WHEN
尝试了一下,Oracle CASE WHEN 是可以支持嵌套使用的。
虽然看起来比较恶心,但是还是挺有用的。
select case &
& & & & &when (1 = 1) then &
& & & & & & & case when(2=3) then &
& & & & & & & & & & & &'A' &
& & & & & & & & & else &'K' &
& & & & & & & & & end &
& & & & &else &
& & & & & 'b' &
& & & &end &
这里可以正常地输出K,表示第二次的CASE WHEN能够发挥作用。case的执行顺序 & 嵌套使用 - Mrs.Totoro - 博客园
我们先来看一下表中数据的情况:
select * from
PRODUCTINFO
PRODUCTID PRODUCTNAME PRODUCTPRICE QUANTITY CATEGORY DESPERATION
商品描述004
商品描述005
商品描述006
把非鱼类的产品都标记为99,鲈鱼标记为2,非鲈鱼的鱼类标记为50.
第一步:利用嵌套case 语句将非鱼类标记为99
when category = '鱼类' then
end) = 0 then '99'
第二步:在鱼类中,名称为‘鲈鱼’的标记为2
第三步:排除第一第二步之后,剩余的标记为100,也就是非鲈鱼的鱼类标记为100.
整体的SQL语句如下:
select PRODUCTNAME,
    when (case when category = '鱼类' then 1
else 0 end) = 0 then '99'
    when productname = '鲈鱼' then '2'
    else '<span style="color: #ff'
  end category_code
from PRODUCTINFO
执行结果如下:
PRODUCTNAME
CATEGORY_CODE
执行顺序说明:
从第一个when条件开始向下执行,如果条件满足了,则不会执行下面的when条件了。
举个栗子:
select PRODUCTNAME,
    when (case when category = '鱼类' then 1 else
0 end) = 0 then '99'
    when productname = '鲈鱼' then '2'
    when productname = '西瓜' then '52'
     else '<span style="color: #ff'
  end category_code
from PRODUCTINFO
你们说西瓜最终的category_code会是什么捏?会是代码中的‘52’吗?
答案是否定的啦,西瓜在第一个when条件语句中,已经被给予了‘99’,就结束了,不会在执行下面的when条件了。 我们看看结果:
PRODUCTNAME
CATEGORY_CODE
西瓜还是‘99’啦你的位置:
Verilog中case语句嵌套出现的问题
最近,我在写程序的时候出现一个问题:组合逻辑的always块出现了不希望的锁存器。我把所有的case都加上了default,还是不好使。这个程序没有什么奇怪的地方,就是使用了case的嵌套。不知道大家有没有过相同的经历,如何解决这个问题。

我要回帖

更多关于 sql case when 嵌套 的文章

 

随机推荐