|
| 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