oracle資料錶行轉列
阿新 • • 發佈:2018-11-08
今天看到一個題目,要求是行轉列,回來查了一下資料
題目要求是把
這樣的一張錶轉換為
這樣的表格
首先建立表
CREATE TABLE A (
year VARCHAR2(255),
month VARCHAR2(255),
amount NUMBER
);
然後插入資料
INSERT INTO "A" VALUES ('2016', '1', '1.1'); INSERT INTO "A" VALUES ('2016', '2', '1.2'); INSERT INTO "A" VALUES ('2017', '1', '2.1'); INSERT INTO "A" VALUES ('2017', '2', '2.2'); INSERT INTO "A" VALUES ('2018', '1', '3.1'); INSERT INTO "A" VALUES ('2018', '2', '3.2');
首先執行
SELECT * FROM A;
得到
方法一:使用case語句
SELECT
a."year",
max( CASE a."month" WHEN '1' THEN a."amount" ELSE 0 END ) m1,
max( CASE a."month" WHEN '2' THEN a."amount" ELSE 0 END ) m2
FROM
a
GROUP BY
a."year";
得到