題目:
下表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...