-
2.使用case語句進行行列轉換<br> select sum(case when user_name='孫悟空' then kills end) as '孫悟空',<br> sum(case when user_name='豬八戒' then kills end) as '豬八戒',<br> sum(case when user_name='沙僧' then kills end) as '沙僧'<br> from user1 a join user_kills b on a.id=b.user_id; ----------------------------------------------- 使用CASE語句: SELECT SUM(CASE USER_NAME='A' THEN KILLS END) AS 'A', SUM(CASE USERNAME='B' THEN KILL END) AS 'B', SUM(CASE USERNAME='C' THEN KILL END) AS 'C' FROM A INNER JOIN B ON A.NAME=B.USERNAME; 通過CASE給滿足WHEN語句的數據返回SUM聚合函數要統計的數據,再將SUM進行重命名。推薦。 一般形式 SELECT NAME AS '姓名', SUM(CASE SUBJECT WHEN '數學' THEN MARK ELSE NULL END) AS '數學', SUM(CASE SUBJECT WHEN '英語' THEN MARK ELSE NULL END) AS '英語', SUM(CASE SUBJECT WHEN '語文' THEN MARK ELSE NULL END) AS '語文' FROM SUBJECT GROUP BY NAME; CASE語句中放原來表中要進行轉換的字段(如學科),對其進行分類(如數學、英語、語文)。 注意:要用聚合函數,最后要GROUP BY。查看全部
-
行轉列: 利用自身連接來實現: SELECT * FROM ( SELECT SUM(KILLS) AS 'A' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='A') AS A CROSS JOIN( SELECT SUM(KILLS) AS 'B' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='B') AS B CROSS JOIN( SELECT SUM(KILLS) AS 'C' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='C')AS C; 比如成績 1、分別查詢出不同同學的成績,并將字段名改為同學的名字 2、通過交叉連接,將不同的語句連接起來 缺點:是將原來查詢的結果每一行單獨查詢出來,再進行拼接。因此每增加一個同學就增加一個SELECT語句。并且是通過交叉連接,要保證每個查詢的結果只能是一個,不然沒辦法通過交叉連接實現轉換。查看全部
-
行列轉換查看全部
-
行列轉換查看全部
-
SQL開發技巧(二) 如何進行行列轉換 需要進行行轉列的場景:報表統計、匯總顯示查看全部
-
SQL開發技巧(二) 內容介紹: 1.如何進行行列轉換 2.如何生成唯一序列號 3.如何刪除重復數據查看全部
-
行列轉換查看全部
-
查找重復數據查看全部
-
生產唯一序列號sql 存儲過程查看全部
-
刪除重複數據查看全部
-
每秒生成1000筆序列號查看全部
-
Union 列轉行查看全部
-
序列 列轉行查看全部
-
行列轉換查看全部
-
case when then end 使用方式查看全部
舉報
0/150
提交
取消