-
2.使用case語句進行行列轉(zhuǎn)換<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語句的數(shù)據(jù)返回SUM聚合函數(shù)要統(tǒng)計的數(shù)據(jù),再將SUM進行重命名。推薦。 一般形式 SELECT NAME AS '姓名', SUM(CASE SUBJECT WHEN '數(shù)學(xué)' THEN MARK ELSE NULL END) AS '數(shù)學(xué)', 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語句中放原來表中要進行轉(zhuǎn)換的字段(如學(xué)科),對其進行分類(如數(shù)學(xué)、英語、語文)。 注意:要用聚合函數(shù),最后要GROUP BY。查看全部
-
行轉(zhuǎn)列: 利用自身連接來實現(xiàn): 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、分別查詢出不同同學(xué)的成績,并將字段名改為同學(xué)的名字 2、通過交叉連接,將不同的語句連接起來 缺點:是將原來查詢的結(jié)果每一行單獨查詢出來,再進行拼接。因此每增加一個同學(xué)就增加一個SELECT語句。并且是通過交叉連接,要保證每個查詢的結(jié)果只能是一個,不然沒辦法通過交叉連接實現(xiàn)轉(zhuǎn)換。查看全部
-
行列轉(zhuǎn)換查看全部
-
行列轉(zhuǎn)換查看全部
-
SQL開發(fā)技巧(二) 如何進行行列轉(zhuǎn)換 需要進行行轉(zhuǎn)列的場景:報表統(tǒng)計、匯總顯示查看全部
-
SQL開發(fā)技巧(二) 內(nèi)容介紹: 1.如何進行行列轉(zhuǎn)換 2.如何生成唯一序列號 3.如何刪除重復(fù)數(shù)據(jù)查看全部
-
行列轉(zhuǎn)換查看全部
-
查找重復(fù)數(shù)據(jù)查看全部
-
生產(chǎn)唯一序列號sql 存儲過程查看全部
-
刪除重複數(shù)據(jù)查看全部
-
每秒生成1000筆序列號查看全部
-
Union 列轉(zhuǎn)行查看全部
-
序列 列轉(zhuǎn)行查看全部
-
行列轉(zhuǎn)換查看全部
-
case when then end 使用方式查看全部
舉報
0/150
提交
取消