oracle縱向顯示變為橫向顯示
我有一個表縱向顯示大致如下:
商品編碼 門店 銷量
------------------------
001 a 100
001 b 50
002 c 250
002 a 10
003 b 15
...
我現在想把門店(門店數量不是固定的),銷量變為橫向顯示,如下
商品編碼 門店a 門店b 門店c ...
--------------------------------------
001 100 50
002 10 250
003 15
方法1:
動態構造,這個很容易懂吧
DECLARE
V_SQL VARCHAR2(2000);
CURSOR CURSOR_1 IS
SELECT DISTINCT 門店 FROM TB T ORDER BY 門店;
BEGIN
V_SQL := 'SELECT 商品編碼';
FOR V_XCLCK IN CURSOR_1 LOOP
V_SQL := V_SQL || ',' || 'SUM(DECODE(門店,''' || V_XCLCK.門店 ||
''',銷量,0)) AS ' || V_XCLCK.門店;
END LOOP;
V_SQL := V_SQL || ' FROM TB GROUP BY 商品編碼';
--DBMS_OUTPUT.PUT_LINE(V_SQL);
V_SQL := 'CREATE OR REPLACE VIEW TB2 AS ' || V_SQL;
--DBMS_OUTPUT.PUT_LINE(V_SQL);
EXECUTE IMMEDIATE V_SQL;
END;
方法2:
select 商品編號,
max(decode(門店,a,銷量)) 門店a,
max(decode(門店,b,銷量)) 門店b,
max(decode(門店,c,銷量)) 門店c
from 表
group by 商品編號;
方法3:
DECLARE
V_SQL VARCHAR2(2000);
CURSOR CURSOR_1 IS
SELECT DISTINCT 門店 FROM TB T ORDER BY 門店;
BEGIN
V_SQL := 'SELECT 商品編碼';
FOR V_XCLCK IN CURSOR_1 LOOP
V_SQL := V_SQL || ',' || 'SUM(DECODE(門店,''' || V_XCLCK.門店 ||
''',銷量,0)) AS ' || V_XCLCK.門店;
END LOOP;
V_SQL := V_SQL || ' FROM TB GROUP BY 商品編碼';
--DBMS_OUTPUT.PUT_LINE(V_SQL);
V_SQL := 'CREATE OR REPLACE VIEW TB2 AS ' || V_SQL;
--DBMS_OUTPUT.PUT_LINE(V_SQL);
EXECUTE IMMEDIATE V_SQL;
END;
商品編碼 門店 銷量
------------------------
001 a 100
001 b 50
002 c 250
002 a 10
003 b 15
...
我現在想把門店(門店數量不是固定的),銷量變為橫向顯示,如下
商品編碼 門店a 門店b 門店c ...
--------------------------------------
001 100 50
002 10 250
003 15
方法1:
動態構造,這個很容易懂吧
DECLARE
V_SQL VARCHAR2(2000);
CURSOR CURSOR_1 IS
SELECT DISTINCT 門店 FROM TB T ORDER BY 門店;
BEGIN
V_SQL := 'SELECT 商品編碼';
FOR V_XCLCK IN CURSOR_1 LOOP
V_SQL := V_SQL || ',' || 'SUM(DECODE(門店,''' || V_XCLCK.門店 ||
''',銷量,0)) AS ' || V_XCLCK.門店;
END LOOP;
V_SQL := V_SQL || ' FROM TB GROUP BY 商品編碼';
--DBMS_OUTPUT.PUT_LINE(V_SQL);
V_SQL := 'CREATE OR REPLACE VIEW TB2 AS ' || V_SQL;
--DBMS_OUTPUT.PUT_LINE(V_SQL);
EXECUTE IMMEDIATE V_SQL;
END;
方法2:
select 商品編號,
max(decode(門店,a,銷量)) 門店a,
max(decode(門店,b,銷量)) 門店b,
max(decode(門店,c,銷量)) 門店c
from 表
group by 商品編號;
方法3:
DECLARE
V_SQL VARCHAR2(2000);
CURSOR CURSOR_1 IS
SELECT DISTINCT 門店 FROM TB T ORDER BY 門店;
BEGIN
V_SQL := 'SELECT 商品編碼';
FOR V_XCLCK IN CURSOR_1 LOOP
V_SQL := V_SQL || ',' || 'SUM(DECODE(門店,''' || V_XCLCK.門店 ||
''',銷量,0)) AS ' || V_XCLCK.門店;
END LOOP;
V_SQL := V_SQL || ' FROM TB GROUP BY 商品編碼';
--DBMS_OUTPUT.PUT_LINE(V_SQL);
V_SQL := 'CREATE OR REPLACE VIEW TB2 AS ' || V_SQL;
--DBMS_OUTPUT.PUT_LINE(V_SQL);
EXECUTE IMMEDIATE V_SQL;
END;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23490154/viewspace-1062435/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- excel文字橫向變縱向快捷鍵 excel文字方向改為縱向Excel
- 縱向控制的橫向滾動
- 矩陣:橫向關係和縱向關係矩陣
- 英特爾:邁向獨立顯示卡市場
- SAP ABAP 動態內表實現 ALV橫向按月份動態顯示資料
- table 表格單元格橫向與縱向合併
- Win10如何將音量條從橫向變為豎向 win10音量條怎麼從橫向變為豎向Win10
- D3.js 力導向圖的顯示優化JS優化
- Oracle的SCN顯示問題Oracle
- elementui 如果變數為1 顯示 開啟,2顯示關閉。表格怎麼根據狀態碼顯示狀態值UI變數
- Brightcove:研究顯示新冠疫情加速了從線性電視向OTT的轉變
- 華為遊戲浮標不顯示或顯示異常遊戲
- CAD中能顯示列印不顯示
- 獨立顯示卡與整合顯示卡的區別 獨立顯示卡與整合顯示卡哪個更好
- Mac顯示/不顯示隱藏檔案教程!Mac
- 電腦顯示器破圖了怎麼辦修復 顯示器螢幕橫條紋修復教程
- 獨立顯示卡與整合顯示卡的區別 獨立顯示卡與整合顯示卡優缺點介紹
- D3.js 力導向圖的顯示優化(二)- 自定義功能JS優化
- css使文字顯示兩行後顯示省略號CSS
- Geoserver + MySQL實現圖層顯示和文字顯示ServerMySql
- Activity背景顯示app圖示APP
- 快速顯示oracle錯誤號的含義Oracle
- gtx和rtx顯示卡的區別 gtx顯示卡和rtx顯示卡哪個好
- tab下拉顯示
- fiddler顯示埠
- tensorboard顯示不全ORB
- opencv顯示中文OpenCV
- 文字超出顯示....
- Application顯示DialogAPP
- matplotlib 顯示中文
- 顯示卡位寬
- fyne :顯示中文
- 專業顯示卡和遊戲顯示卡的區別詳解 專業顯示卡和遊戲顯示卡哪個好?遊戲
- 調查顯示德國年輕人更傾向於投資加密貨幣加密
- 顯示卡效能天梯圖2022最新 桌面顯示卡筆記本顯示卡效能天梯圖最新筆記
- [20200217]bash顯示path環境變數.txt變數
- win10主顯示器在右邊怎麼設定_win10如何設定右邊顯示器為主顯示器Win10
- win10合上螢幕外接顯示器不變怎麼設定_win10合上螢幕外接顯示器繼續顯示如何操作Win10
- Omdia:近眼顯示開啟顯示發展新未來