sql 行轉列問題

2021-04-12 14:42:55 字數 1509 閱讀 4032

題目:  

下表tproduct某產品在各城市各月銷量情況

city_name

month_no(月)

qut__qty(臺)

杭州

9

100

杭州

10

120

上海

9

130

上海

10

140

…..

請寫sql實現 如下查詢

city

9月銷量

10月銷量

杭州          100        120

上海          130        140

。。。           。。

。。 答案一 ;

select

v.city_name,

sum ( decode ( v.month_no,9 ,v.qut__qty,0))as m9 ,

sum ( decode ( v.month_no,10,v.qut__qty,0))as m10 

from tproduct v 

group by v.city_name 

答案二:

select v.city_name,

nvl (sum ( case when v.month_no = 9 then v.qut__qty end ) ,0)as m9 ,

nvl (sum ( case when v.month_no = 10 then v.qut__qty end ),0)as m10

from tproduct  v 

group by v.city_name

(select  fpc.partno,

sum ( decode ( fpc.org_id,21385 ,fpc.qty,0))as  qty1 ,

sum ( decode ( fpc.org_id,21383 ,fpc.qty,0))as  qty2,

fpc.qty,fpc.consumption_date

from fact_parts_consumption fpc

group by fpc.partno,fpc.qty,fpc.consumption_date)

( select fpc.partno, fpc.qty, fpc.org_id,

nvl (sum ( case when fpc.org_id = 21383 then fpc.qty end ) ,0)as qty21383 ,

nvl (sum ( case when fpc.org_id = 21385 then fpc.qty end ),0)as qty21385

from fact_parts_consumption fpc

group by fpc.partno, fpc.qty, fpc.org_id)

sql行轉列問題

mysql sql語句 行轉列問題 存在表score,記錄學生的考試成績,如下圖所示 現要求以 學生姓名,語文,數學,英語 這種格式顯示學生成績,如下圖所示 具體步驟如下 1 首先,使用case when函式輸出單個課程的成績 case when course 語文 then score end a...

經典SQL問題 行轉列《轉》

20人收藏此文章,我要收藏 贊0 學校裡面記錄成績,每個人的選課不一樣,而且以後會新增課程,所以不需要把所有課程當作列。資料庫grade裡面資料如下圖,假定每個人姓名都不一樣,作為主鍵。本文以mysql為基礎,其他資料庫會有些許語法不同。資料庫資料 處理後效果 下面介紹三種方法 方法一 1 2345...

SQL 行轉列總結

行轉列應該使用case 想要把某個行轉成列的列名 when 裡將各個列的值放進去 then 分組後某個值要進行彙總行 else 0 end 動態生成的話,將想要用的轉的,用selec查出來拼成以上格式就可以了 declare sql varchar 8000 如果大於8000只能用程式去拼乙個sql...