Skip to content

Commit 646dd78

Browse files
committed
sql行转列
1 parent 463ed34 commit 646dd78

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
SQL开发技巧(二)
2+
内容介绍:
3+
1.如何进行行列转换
4+
2.如何生成唯一序列号
5+
3.如何删除重复数据
6+
7+
********************************************************************************
8+
需要进行行转列的场景:报表统计、汇总显示
9+
10+
********************************************************************************
11+
行转列:
12+
利用自身连接来实现:
13+
SELECT *
14+
FROM (
15+
SELECT SUM(KILLS) AS 'A'
16+
FROM A INNER JOIN B ON A.NAME=B.USER_NAME
17+
WHERE A.NAME='A') AS A CROSS JOIN(
18+
SELECT SUM(KILLS) AS 'B'
19+
FROM A INNER JOIN B ON A.NAME=B.USER_NAME
20+
WHERE A.NAME='B') AS B CROSS JOIN(
21+
SELECT SUM(KILLS) AS 'C'
22+
FROM A INNER JOIN B ON A.NAME=B.USER_NAME
23+
WHERE A.NAME='C')AS C;
24+
25+
比如成绩
26+
1、分别查询出不同同学的成绩,并将字段名改为同学的名字
27+
2、通过交叉连接,将不同的语句连接起来
28+
29+
缺点:是将原来查询的结果每一行单独查询出来,再进行拼接。
30+
因此每增加一个同学就增加一个SELECT语句。并且是通过交叉连接,要保证每个查询的结果只能是一个,不然没办法通过交叉连接实现转换。
31+
32+
33+
34+

0 commit comments

Comments
 (0)