免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
case 用法

寫SQL語(yǔ)句時(shí),或在PL/SQL中,經(jīng)常需要在一個(gè)SQL語(yǔ)句中,根據(jù)不同的條件,有多種處理方法,如下面的例子:出售一種商品時(shí),單價(jià)不同,折扣不同,對(duì)這種需求的處理,如果分情況處理,將會(huì)很麻煩,如果用Case語(yǔ)句,就可以在一條SQL語(yǔ)句中得到想要的結(jié)果。

Case的語(yǔ)法:

case when 條件A Then 結(jié)果A When 條件B 結(jié)果B....... else 結(jié)果N end和Decode 不同的是,Decode 只能針對(duì)固定的值,而 Case 可以用不是固定值,需是一個(gè)條件。

現(xiàn)在有以下的需求,有一個(gè)字符串,最后的兩位可能是 ’/R’ ,’/T’ 另外,有的后兩位沒(méi)有前面的’/R’ ,’/T’ ,現(xiàn)在針對(duì)不同的需要,要將 ’/R’ ,’/T’ 取掉,沒(méi) ’/R’ ,’/T’, 就不做處理。

A01JCL-A01JCL/GF117F0001TR/RSQL寫法:
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語(yǔ)句做一些查詢,主要想完成類似交差表功能  
  下面的語(yǔ)句是針對(duì)pubs數(shù)據(jù)庫(kù)的sales表編寫的  
  SELECT   SUM(CASE   sales.stor_id   WHEN   '6380'   THEN   sales.qty   ELSE   0   END)   AS   col1,    
            SUM(CASE   sales.stor_id   WHEN   '7066'   THEN   sales.qty   ELSE   0   END)   AS   col2    
  FROM   sales  
   
  這個(gè)語(yǔ)句只完成了我所要求的部分功能,現(xiàn)在我想再加一層并且關(guān)系的條件,例如stor_id=’6380’并且   payterms=60,stor_id=’6380’并且   payterms=30,stor_id=’7066’并且   payterms=60,stor_id=’7066’并且   payterms=30  
  這只是一種較簡(jiǎn)單的情況,并且關(guān)系的條件可能會(huì)更多,要求這些語(yǔ)句不是由開(kāi)發(fā)人員手工來(lái)寫,要由程序根據(jù)條件自動(dòng)生成,所以一定要有規(guī)律,否則程序無(wú)法形成SQL語(yǔ)句

SELECT   SUM(CASE   WHEN   sales.stor_id='6380'   and   payterms=60   THEN   sales.qty   ELSE   0   END)   AS   col1,    
          SUM(CASE   WHEN   sales.stor_id='6380'   and   payterms=30   THEN   sales.qty   ELSE   0   END)   AS   col2,    
          SUM(CASE   sales.stor_id   WHEN   '7066'   and   payterms=60   THEN   sales.qty   ELSE   0   END)   AS   col3,    
          SUM(CASE   sales.stor_id   WHEN   '7066'   and   payterms=30   THEN   sales.qty   ELSE   0   END)   AS   col4    
  FROM   sales  

如下湊出SQL語(yǔ)句是一個(gè)辦法,但比較麻煩也不太可能通用:  
   
   
  SELECT   SUM(CASE   WHEN   sales.stor_id='6380'   and   payterms=60   THEN   sales.qty   ELSE   0   END)   AS   col1,    
          SUM(CASE   WHEN   sales.stor_id='6380'   and   payterms=30   THEN   sales.qty   ELSE   0   END)   AS   col2,    
          SUM(CASE   WHEN   sales.stor_id   ='7066'   and   payterms=60   THEN   sales.qty   ELSE   0   END)   AS   col3,    
          SUM(CASE   WHEN   sales.stor_id   ='7066'   and   payterms=30   THEN   sales.qty   ELSE   0   END)   AS   col4    
  FROM   sales  

 

CASE 可能是 SQL 中被誤用最多的關(guān)鍵字之一。雖然你可能以前用過(guò)這個(gè)關(guān)鍵字來(lái)創(chuàng)建字段,但是它還具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。

  首先讓我們看一下 CASE 的語(yǔ)法。在一般的 SELECT 中,其語(yǔ)法如下:

SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END


  在上面的代碼中需要用具體的參數(shù)代替尖括號(hào)中的內(nèi)容。下面是一個(gè)簡(jiǎn)單的例子:

USE pubs
GO
SELECT
    Title,
    'Price Range' =
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
FROM titles
ORDER BY price
GO


  這是 CASE 的典型用法,但是使用 CASE 其實(shí)可以做更多的事情。比方說(shuō)下面的 GROUP BY 子句中的 CASE:

SELECT 'Number of Titles', Count(*)
FROM titles
GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
GO


  你甚至還可以組合這些選項(xiàng),添加一個(gè) ORDER BY 子句,如下所示:

USE pubs
GO
SELECT
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END AS Range,
    Title
FROM titles
GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END,
    Title
ORDER BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END,
    Title
GO


  注意,為了在 GROUP BY 塊中使用 CASE,查詢語(yǔ)句需要在 GROUP BY 塊中重復(fù) SELECT 塊中的 CASE 塊。

  除了選擇自定義字段之外,在很多情況下 CASE 都非常有用。再深入一步,你還可以得到你以前認(rèn)為不可能得到的分組排序結(jié)果集。


 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
sql 語(yǔ)句中的語(yǔ)法 case when ... then ... else ...end
oracle 存儲(chǔ)過(guò)程語(yǔ)句總結(jié)
【VBA】判斷語(yǔ)句
sql中使用: case
case when then else end 用法--很好
VBA常用語(yǔ)句(判斷語(yǔ)句)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服