SQL行列互換

2021-08-23 14:07:13 字數 1247 閱讀 2347

題目:資料庫中有一張如下所示的表,表名為sales。

季度銷售量

1991111

1991212

1991313

1991414

1992121

1992222

1992323

1992424

要求:寫乙個sql語句查詢出如下所示的結果。

一季度二季度

三季度四季度

1991

1112

1314

1992

2122

2324

這裡只貼mysql中查詢答案,最近開發用的都是mysql資料庫。貌似oracle有更簡潔的寫法。

最簡單的方法,子查詢:

select s.`year`,

(select sa.`saleamount`from sales sa where sa.`year`=s.`year` and sa.`quarter`=1) as '第一季度',

(select sa.`saleamount`from sales sa where sa.`year`=s.`year` and sa.`quarter`=2) as '第二季度',

(select sa.`saleamount`from sales sa where sa.`year`=s.`year` and sa.`quarter`=3) as '第三季度',

(select sa.`saleamount`from sales sa where sa.`year`=s.`year` and sa.`quarter`=4) as '第四季度'

from sales s group by s.`year` 

這是參考別人的寫法,用case when then

select s.`year` as '年度',

(case when s.`quarter`=1 then s.`saleamount`  end) as '第一季度',

(case when s.`quarter`=1 then s.`saleamount`  end) as '第二季度',

(case when s.`quarter`=1 then s.`saleamount`  end) as '第三季度',

(case when s.`quarter`=1 then s.`saleamount`  end) as '第四季度'

from sales s group by s.`year`

SQL(行列互換)

有乙個sql題在面試中出現的概率極高,最近有學生出去面試仍然會遇到這樣的題目,在這裡跟大家分享一下。題目 資料庫中有一張如下所示的表,表名為sales。年 季度銷售量 1991111 1991212 1991313 1991414 1992121 1992222 1992323 1992424 要求...

SQL行列互換

有乙個sql題在面試中出現的概率極高,在這裡跟大家分享一下。題目 資料庫中有一張如下所示的表,表名為sales。年 季度銷售量 1991111 1991212 1991313 1991414 1992121 1992222 1992323 1992424 要求 寫乙個sql語句查詢出如下所示的結果。...

SQL 行列互換

一 行轉列 1 建立 ifobject id tb is notnull drop tabletb go create tabletb 姓名varchar 10 課程varchar 10 分數int insert intotbvalues 張三 語文 74 insert intotbvalues 張...