表的轉置 行轉列: DECODE(Oracle) 和 CASE WHEN 的異同點

異同點
  • 都可以對表行轉列;
  • DECODE功能上和簡單Case函數比較類似,不能像Case搜索函數一樣,進行更復雜的判斷
  • 在Case函數中,可以使用BETWEEN, LIKE, IS NULL, IN, EXISTS等等(也可以使用NOT IN和NOT EXISTS,但是這個時候要注意NULL的情況。)
DECODE方法 (Oracle公司獨家)

decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

--該函數的含義如下:    
IF    條件=值1 THEN RETURN(翻譯值1)   
ELSIF 條件=值2 THEN RETURN(翻譯值2)  ......  
ELSIF 條件=值n THEN RETURN(翻譯值n)  
ELSE  RETURN(缺省值)  
END IF   
--行轉列
SELECT name, SUM(DECODE(Subject, '數學', Score, 0)) 數學, SUM(DECODE(Subject, '語文', Score, 0)) 語文, SUM(DECODE(Subject, '英語', Score, 0)) 英語 FROM Scores GROUP BY name 
CASE WHEN
SELECT name,
SUM( CASE WHEN Subject='數學' THEN Score ELSE 0 END) 數學, SUM( CASE WHEN Subject='語文' THEN Score ELSE 0 END) 語文, SUM( CASE WHEN Subject='英語' THEN Score ELSE 0 END) 英語 FROM Scores group by name;

Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略,Else部分的默認值是NULL

Case具有兩種格式,簡單Case函數的寫法相對比較簡潔,但是和Case搜索函數相比,功能方面會有些限制,比如寫判斷式

在Case函數中,可以使用BETWEEN, LIKE, IS NULL, IN, EXISTS等等(也可以使用NOT IN和NOT EXISTS,但是這個時候要注意NULL的情況。)

--簡單Case函數
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END--Case搜索函數 
CASE 
WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END --根據條件有選擇的UPDATE。 UPDATE Scores SET grade = CASE WHEN score >= 85 THEN '優秀' WHEN score >= 70 AND score < 85 THEN '良好' WHEN score >= 60 AND score < 70 THEN '及格' ELSE '不及格' END; --在Case函數中使用聚合函數:COUNT, SUM, AVG, MAX, MIN SELECT name, CASE WHEN COUNT(*) = 1 THEN MAX(subject) ELSE MAX(CASE WHEN major = 'Y' THEN subject ELSE NULL END) END AS major_subject FROM Scores GROUP BY name; 
Scores表結構和實現如下

image
image

轉載于:https://www.cnblogs.com/niudaxianren/p/10018715.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250159.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250159.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250159.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[pytorch、學習] - 4.4 自定義層

參考 4.4 自定義層 深度學習的一個魅力在于神經網絡中各式各樣的層,例如全連接層和后面章節將要用介紹的卷積層、池化層與循環層。雖然PyTorch提供了大量常用的層,但有時候我們依然希望自定義層。本節將介紹如何使用Module來自定義層,從而可以被重復調用。 4.4.1 不含模型參…

樹的存儲

父親表示法 顧名思義&#xff0c;就是只記錄每個結點的父結點。 int n; int p[MAX_N]; // 指向每個結點的父結點 孩子表示法 如上&#xff0c;就是只記錄每個結點的子結點。 int n; int cnt[MAX_N]; // 記錄每個結點的子結點的數量 int p[MAX_N][MAX_CNT]; // 指向每個結點的子…

spring-boot注解詳解(四)

repository repository跟Service,Compent,Controller這4種注解是沒什么本質區別,都是聲明作用,取不同的名字只是為了更好區分各自的功能.下圖更多的作用是mapper注冊到類似于以前mybatis.xml中的mappers里. 也是因為接口沒辦法在spring.xml中用bean的方式來配置實現類吧(接口…

令人叫絕的EXCEL函數功能

http://club.excelhome.net/thread-166725-1-1.html https://wenku.baidu.com/view/db319da0bb0d4a7302768e9951e79b8969026864.html轉載于:https://www.cnblogs.com/cqufengchao/articles/9150401.html

[pytorch、學習] - 4.5 讀取和存儲

參考 4.5 讀取和存儲 到目前為止,我們介紹了如何處理數據以及如何構建、訓練和測試深度學習模型。然而在實際中,我們有時需要把訓練好的模型部署到很多不同的設備。在這種情況下,我們可以把內存中訓練好的模型參數存儲在硬盤上供后續讀取使用。 4.5.1 讀寫tensor 我們可以直…

JAVA排序的方法

//冒泡排序法&#xff1a; package fuxi;public class Bubble { public static void main(String[] args) { int a[] { 10,23,11,56,45,26,59,28,84,79 }; int i,temp; System.out.println("輸出原始數組數據&#xff1a;"); for (i…

spring-boot注解詳解(五)

AutoWired 首先要知道另一個東西&#xff0c;default-autowire&#xff0c;它是在xml文件中進行配置的&#xff0c;可以設置為byName、byType、constructor和autodetect&#xff1b;比如byName&#xff0c;不用顯式的在bean中寫出依賴的對象&#xff0c;它會自動的匹配其它bea…

什么是p12證書?ios p12證書怎么獲取?

.cer是蘋果的默認證書&#xff0c;在xcode開發打包可以使用&#xff0c;如果在lbuilder、phonegap、HBuilder、AppCan、APICloud這些跨平臺開發工具打包&#xff0c;就需要用到p12文件。 .cer證書僅包含公鑰&#xff0c;.p12證書可能既包含公鑰也包含私鑰&#xff0c;這就是他們…

[pytorch、學習] - 4.6 GPU計算

參考 4.6 GPU計算 到目前為止,我們一直使用CPU進行計算。對復雜的神經網絡和大規模數據來說,使用CPU來計算可能不夠高效。 在本節中,將要介紹如何使用單塊NIVIDA GPU進行計算 4.6.1 計算設備 PyTorch可以指定用來存儲和計算的設備,如果用內存的CPU或者顯存的GPU。默認情況下…

adb connect 192.168.1.10 failed to connect to 192.168.1.10:5555

adb connect 192.168.1.10 輸出 failed to connect to 192.168.1.10:5555 關閉安卓端Wi-Fi&#xff0c;重新打開連接即可 轉載于:https://www.cnblogs.com/sea-stream/p/10020995.html

創建oracle數據庫表空間并分配用戶

我們在本地的oracle上或者virtualbox的oracle上 創建新的數據庫表空間操作&#xff1a;通過system賬號來創建并授權/*--創建表空間create tablespace YUJKDATAdatafile c:\yujkdata200.dbf --指定表空間對應的datafile文件的具體的路徑size 100mautoextend onnext 10m*/ /*--創…

spring-boot注解詳解(六)

Target Target說明了Annotation所修飾的對象范圍&#xff1a;Annotation可被用于 packages、types&#xff08;類、接口、枚舉、Annotation類型&#xff09;、類型成員&#xff08;方法、構造方法、成員變量、枚舉值&#xff09;、方法參數和本地變量&#xff08;如循環變量、…

[pytorch、學習] - 5.1 二維卷積層

參考 5.1 二維卷積層 卷積神經網絡(convolutional neural network)是含有卷積層(convolutional layer)的神經網絡。本章介紹的卷積神經網絡均使用最常見的二維卷積層。它有高和寬兩個空間維度,常用來處理圖像數據。本節中,我們將介紹簡單形式的二維卷積層的工作原理。 5.1.1…

[51CTO]給您介紹Windows10各大版本之間區別

給您介紹Windows10各大版本之間區別 隨著win10的不斷普及和推廣&#xff0c;越來越多的朋友想安裝win10系統了&#xff0c;但是很多朋友不知道win10哪個版本好用&#xff0c;為了讓大家能夠更好的選擇win10系統版本&#xff0c;下面小編就來告訴你 http://os.51cto.com/art/201…

iOS中NSString轉換成HEX(十六進制)-NSData轉換成int

NSString *str "0xff055008"; //先以16為參數告訴strtoul字符串參數表示16進制數字&#xff0c;然后使用0x%X轉為數字類型 unsigned long red strtoul([str UTF8String],0,16); //strtoul如果傳入的字符開頭是“0x”,那么第三個參數是0&#xff0c;也是會轉為十…

spring-boot注解詳解(七)

Configuration 從Spring3.0&#xff0c;Configuration用于定義配置類&#xff0c;可替換xml配置文件&#xff0c;被注解的類內部包含有一個或多個被Bean注解的方法&#xff0c;這些方法將會被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進行…

[pytorch、學習] - 5.2 填充和步幅

參考 5.2 填充和步幅 5.2.1 填充 填充(padding)是指在輸入高和寬的兩側填充元素(通常是0元素)。圖5.2里我們在原輸入高和寬的兩側分別添加了值為0的元素,使得輸入高和寬從3變成了5,并導致輸出高和寬由2增加到4。圖5.2中的陰影部分為第一個輸出元素及其計算所使用的輸入和核數…

java實現Comparable接口和Comparator接口,并重寫compareTo方法和compare方法

原文地址https://segmentfault.com/a/1190000005738975 實體類:java.lang.Comparable(接口) comareTo(重寫方法)&#xff0c;業務排序類 java.util.Comparator(接口) compare(重寫方法). 這兩個接口我們非常的熟悉&#xff0c;但是 在用的時候會有一些不知道怎么下手的感覺&a…

hdu 4714 樹+DFS

題目鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4714 本來想直接求樹的直徑&#xff0c;再得出答案&#xff0c;后來發現是錯的。 思路&#xff1a;任選一個點進行DFS&#xff0c;對于一棵以點u為根節點的子樹來說&#xff0c;如果它的分支數大于1&#xff0c…

springboot----shiro集成

springboot中集成shiro相對簡單&#xff0c;只需要兩個類&#xff1a;一個是shiroConfig類&#xff0c;一個是CustonRealm類。 ShiroConfig類&#xff1a; 顧名思義就是對shiro的一些配置&#xff0c;相對于之前的xml配置。包括&#xff1a;過濾的文件和權限&#xff0c;密碼加…