首頁 資料庫 mysql教程 表格的横纵转

表格的横纵转

Jun 07, 2016 pm 02:56 PM
sql 橫向 縱向 表格 記錄 語句

SQL语句中,横向记录转成纵向列, 纵向列转成横向记录。 无 ##############行转列-example 1 ,学生成绩###############创建数据库表CREATE TABLE StudentScores ( UserName NVARCHAR(20), Subject NVARCHAR(30), Score FLOAT ) ; #插入模拟数据INSERT INTO St

SQL语句中,横向记录转成纵向列, 纵向列转成横向记录。
##############行转列-example 1 ,学生成绩##############
#创建数据库表
CREATE  TABLE StudentScores  (
      UserName         NVARCHAR(20),            
      Subject          NVARCHAR(30),              
      Score            FLOAT                
      )  ;      
#插入模拟数据
INSERT INTO StudentScores SELECT 'Nick', '语文', 80 ; 
INSERT INTO StudentScores SELECT 'Nick', '数学', 90 ;
INSERT INTO StudentScores SELECT 'Nick', '英语', 70 ; 
INSERT INTO StudentScores SELECT 'Nick', '生物', 85 ;
INSERT INTO StudentScores SELECT 'Kent', '语文', 80 ;
INSERT INTO StudentScores SELECT 'Kent', '数学', 90 ;
INSERT INTO StudentScores SELECT 'Kent', '英语', 70 ;
INSERT INTO StudentScores SELECT 'Kent', '生物', 85 ;
#查询每个学生的各科成绩
SELECT UserName, 
       MAX(CASE Subject WHEN '语文' THEN Score ELSE 0 END) AS '语文',        
       MAX(CASE Subject WHEN '数学' THEN Score ELSE 0 END) AS '数学',        
       MAX(CASE Subject WHEN '英语' THEN Score ELSE 0 END) AS '英语',        
       MAX(CASE Subject WHEN '生物' THEN Score ELSE 0 END) AS '生物' 
FROM StudentScores
GROUP BY UserName ;

##############行转列-example 2 ,游戏玩家充值##############
#创建数据库表
CREATE TABLE Inpours  (
       ID             INT AUTO_INCREMENT,
       UserName          NVARCHAR(20),        
       CreateTime     DATETIME,               
       PayType         NVARCHAR(20),            
       Money             DECIMAL,             
       IsSuccess         BIT,    
       CONSTRAINT PK_Inpours_ID PRIMARY KEY(ID)  
)   ;
#插入模拟数据
INSERT INTO Inpours(UserName , CreateTime , PayType , Money , IsSuccess) SELECT '张三', '2010-05-01', '支付宝', 50, 1  ;
INSERT INTO Inpours(UserName , CreateTime , PayType , Money , IsSuccess) SELECT '张三', '2010-06-14', '支付宝', 50, 1  ;
INSERT INTO Inpours(UserName , CreateTime , PayType , Money , IsSuccess) SELECT '张三', '2010-06-14', '手机短信', 100, 1  ;
INSERT INTO Inpours(UserName , CreateTime , PayType , Money , IsSuccess) SELECT '李四', '2010-06-14', '手机短信', 100, 1  ;  
INSERT INTO Inpours(UserName , CreateTime , PayType , Money , IsSuccess) SELECT '李四', '2010-07-14', '支付宝', 100, 1  ;  
INSERT INTO Inpours(UserName , CreateTime , PayType , Money , IsSuccess) SELECT '王五', '2010-07-14', '工商银行卡', 100, 1  ;  
INSERT INTO Inpours(UserName , CreateTime , PayType , Money , IsSuccess) SELECT '赵六', '2010-07-14', '建设银行卡', 100, 1  ;
#要求按日期、支付方式来统计充值金额信息
select CreateTime,
       CASE PayType WHEN '支付宝' THEN SUM(Money) ELSE 0 END AS '支付宝',       
       CASE PayType WHEN '手机短信' THEN SUM(Money) ELSE 0 END AS '手机短信',       
       CASE PayType WHEN '工商银行卡' THEN SUM(Money) ELSE 0 END AS '工商银行卡',       
       CASE PayType WHEN '建设银行卡' THEN SUM(Money) ELSE 0 END AS '建设银行卡'       
FROM Inpours 
GROUP BY CreateTime, PayType

##############列转行-example 1 ,供货信息##############
#创建数据库表
CREATE TABLE ProgrectDetail  (
      ProgrectName         NVARCHAR(20),      
      OverseaSupply        INT,              
      NativeSupply         INT,                
      SouthSupply          INT,               
      NorthSupply          INT             
)
#插入模拟数据
   INSERT INTO ProgrectDetail 
   SELECT 'A', 100, 200, 50, 50  
   UNION ALL SELECT 'B', 200, 300, 150, 150  
   UNION ALL SELECT 'C', 159, 400, 20, 320  
   UNION ALL SELECT 'D', 250, 30, 15, 15
#
SELECT ProgrectName, 'OverseaSupply' AS Supplier, MAX(OverseaSupply) AS 'SupplyNum' FROM ProgrectDetail  GROUP BY ProgrectName  
UNION ALL 
SELECT ProgrectName, 'NativeSupply' AS Supplier, MAX(NativeSupply) AS 'SupplyNum' FROM ProgrectDetail  GROUP BY ProgrectName  
UNION ALL 
SELECT ProgrectName, 'SouthSupply' AS Supplier, MAX(SouthSupply) AS 'SupplyNum' FROM ProgrectDetail  GROUP BY ProgrectName 
UNION ALL 
SELECT ProgrectName, 'NorthSupply' AS Supplier, MAX(NorthSupply) AS 'SupplyNum' FROM ProgrectDetail  GROUP BY ProgrectName
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PPT表格中插入的圖片調整格式的操作步驟 PPT表格中插入的圖片調整格式的操作步驟 Mar 26, 2024 pm 04:16 PM

1.新建一個PPT文件,命名為【PPT技巧】,作為範例。 2、雙擊【PPT技巧】,開啟PPT檔。 3、插入兩行兩列的表格,作為範例。 4.在表格的邊框上雙擊,上方工具列出現【設計】的選項。 5.點選【底紋】的選項,點選【圖】。 6.點選【圖片】,彈出以圖片為背景的填滿選項對話框。 7.在目錄中找到要插入的托,點選確定即可插入圖片。 8.在表格框上右鍵,彈出設定的對話框。 9.點選【設定儲存格格式】,勾選【將圖片平鋪為底紋】。 10.設定【居中】【鏡像】等自己需要的功能,點選確定即可。注意:預設為圖片填充在表格

Hibernate 框架中 HQL 和 SQL 的差異是什麼? Hibernate 框架中 HQL 和 SQL 的差異是什麼? Apr 17, 2024 pm 02:57 PM

HQL和SQL在Hibernate框架中進行比較:HQL(1.物件導向語法,2.資料庫無關的查詢,3.類型安全),而SQL直接操作資料庫(1.與資料庫無關的標準,2.可執行複雜查詢和資料操作)。

拼多多買過的東西在哪裡查看記錄 查看買過的商品記錄的方法 拼多多買過的東西在哪裡查看記錄 查看買過的商品記錄的方法 Mar 12, 2024 pm 07:20 PM

拼多多軟體內提供的商品好物非常多,隨時隨地想買就買,而且每一件商品品質都是嚴格把關的,件件商品都是正品,不同還有非常多優惠的購物折扣,讓大家網購根本停不下來。輸入手機號碼在線登錄,在線添加多個收貨地址和聯繫方式,可以隨時查看最新的物流動態,不同品類的商品板塊都是開放的,搜索上下滑動選購下單,足不出戶輕鬆體驗便捷的網購服務,還能查看所有的購買記錄,包括自己買過的商品,數十個購物紅包、優惠券免費領取使用,現在小編在線詳細為拼多多用戶們帶來查看買過的商品記錄的方法。  1.打開手機,點選拼多多圖標,

關於銷售預測如何製作表格 關於銷售預測如何製作表格 Mar 20, 2024 pm 03:06 PM

能夠熟練的製作表格不僅是會計、人事以及財務的必備技能,對於許多銷售人員來說,學會製作表格也是很重要的。因為與銷售量有關的數據都是很多且很複雜的,而且不是簡單的記在文件當中,就可以說明問題的。為了能讓更多的銷售人員熟練運用Excel來製作表格,小編接下來要介紹的就是有關於銷量預測的表格製作問題,有需要的朋友不要錯過哦! 1,開啟【銷售預測及目標制定】,xlsm,來分析每個表格所存放的資料。 2,新建【空白工作表】,選擇【儲存格】,輸入【標籤資訊】。向下【拖曳】,【填充】月份。輸入【其它】數據,點選【

Oracle SQL中除法運算的用法 Oracle SQL中除法運算的用法 Mar 10, 2024 pm 03:06 PM

《OracleSQL中除法運算的用法》在OracleSQL中,除法運算是常見的數學運算之一。在資料查詢和處理過程中,除法運算可以幫助我們計算欄位之間的比例或得出特定數值的邏輯關係。本文將介紹OracleSQL中除法運算的用法,並提供具體的程式碼範例。一、OracleSQL中除法運算的兩種方式在OracleSQL中,除法運算可以用兩種不同的方式來進行

wps數值如何設定依條件自動變色_wps表格數值設定依條件自動變色的步驟 wps數值如何設定依條件自動變色_wps表格數值設定依條件自動變色的步驟 Mar 27, 2024 pm 07:30 PM

1.開啟工作表,找到【開始】-【條件格式】按鈕。 2、點選列選擇,選取將新增條件格式的列。 3.點選【條件格式】按鈕,彈出選項選單國。 4.選擇【突出顯示條件規則】-【介於】。 5、填寫規則:20,24,深填色深綠色文字。 6.確定後,所選列中資料依設定對對應數字文字、單元框加色處理。 7.對於沒有衝突的條件規則,可以重複添加,但對於衝突規則wps則會以最後添加的規則代替先前建立的條件規則。 8.重複新增【介於】規則20-24和【小於】20後的單元列。 9.如需改變規則,剛可以清除規則後重新設定規則。

Oracle與DB2的SQL語法比較與區別 Oracle與DB2的SQL語法比較與區別 Mar 11, 2024 pm 12:09 PM

Oracle和DB2是兩個常用的關聯式資料庫管理系統,它們都有自己獨特的SQL語法和特性。本文將針對Oracle和DB2的SQL語法進行比較與區別,並提供具體的程式碼範例。資料庫連接在Oracle中,使用以下語句連接資料庫:CONNECTusername/password@database而在DB2中,連接資料庫的語句如下:CONNECTTOdataba

詳解MyBatis動態SQL標籤中的Set標籤功能 詳解MyBatis動態SQL標籤中的Set標籤功能 Feb 26, 2024 pm 07:48 PM

MyBatis動態SQL標籤解讀:Set標籤用法詳解MyBatis是一個優秀的持久層框架,它提供了豐富的動態SQL標籤,可以靈活地建構資料庫操作語句。其中,Set標籤是用來產生UPDATE語句中SET子句的標籤,在更新作業中非常常用。本文將詳細解讀MyBatis中Set標籤的用法,以及透過具體的程式碼範例來示範其功能。什麼是Set標籤Set標籤用於MyBati

See all articles