SQL查詢行轉列和列轉行

2021-09-25 18:59:56 字數 3358 閱讀 6684

主要思路是分組後使用case進行條件判斷處理

示例1

select team,

示例2

create

table wyc_test(

id int(32

)not

null

auto_increment

, name varchar(80

)default

null

,date

date

default

null

, scount int(32

),primary

key(id));

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(1

,'**'

,'2013-09-01'

,10000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(2

,,'2013-09-01'

,20000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(3

,'**'

,'2013-09-02'

,30000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(4

,,'2013-09-02'

,35000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(5

,'**'

,'2013-09-03'

,31000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(6

,,'2013-09-03'

,36000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(7

,'**'

,'2013-09-04'

,35000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(8

,,'2013-09-04'

,38000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(9

,'**'

,'2013-09-01'

,80000);

insert

into

`wyc_test`

(`id`

,`name`,`

date`,

`scount`

)values(10

,,'2013-09-01'

,70000

);

#行轉列

select

a.date

,sum

(case a.name

when

'**'

then a.scount

else

0end

)'sum_**'

,max

(case a.name

when

'**'

then a.scount

else

0end

)'max_**'

,sum

(case a.name

when

then a.scount

else

0end),

max(

case a.name

when

'**'

then a.scount

else

0end

)from

wyc_test a

group

bydate

;

結果

SQL 行轉列,列轉行

行列轉換在做報表分析是還是經常會遇到的 行列轉換就是如下圖所示兩種展示形式互相轉換 只是做測試,建表比較隨意 create table student name varchar 20 subject int 10 score int 10 insert into student name,subje...

python 列轉行 SQL 行轉列,列轉行

sql 行轉列,列轉行 行列轉換在做報表分析時還是經常會遇到的,今天就說一下如何實現行列轉換吧。行列轉換就是如下圖所示兩種展示形式的互相轉換 行轉列假如我們有下表 select from student pivot sum score for subject in 語文,數學,英語 通過上面 sql...

sql 行轉列,列轉行整合

原始資料及結構如下 when 語文 then t.score else 0 end 語文,sum case t.subject when 數學 then t.score else 0 end 數學 sum case t.subject when 英語 then t.score else 0 end ...