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
- MySQL中如何橫向顯示結果集薦MySql
- Oracle將結果豎向顯示Oracle
- EXCEL橫向變縱向(不需要VBA)Excel
- 縱向控制的橫向滾動
- 矩陣:橫向關係和縱向關係矩陣
- iOS 可以縱向橫向滑動的表格實現iOS
- Win10如何將音量條從橫向變為豎向 win10音量條怎麼從橫向變為豎向Win10
- SAP ABAP 動態內表實現 ALV橫向按月份動態顯示資料
- D3.js 力導向圖的顯示優化JS優化
- Win10系統電腦桌面橫向變成縱向瞭如何解決【圖文】Win10
- elementui 如果變數為1 顯示 開啟,2顯示關閉。表格怎麼根據狀態碼顯示狀態值UI變數
- 調查顯示德國年輕人更傾向於投資加密貨幣加密
- Babaali智慧方向燈頭盔:LED燈顯示轉向方向
- oracle中文顯示亂碼Oracle
- WinPE中如何改變檔案顯示圖示
- eclipse中的漢字橫著顯示,或顯示不正確,字型大小顏色設定Eclipse
- TrendForce:資料顯示太陽能廠商轉向中國內需市場
- Google:研究顯示35%的消費者傾向高階手機Go
- Scale-up(縱向擴充套件)和Scale-out(橫向擴充套件)套件
- Oracle的SCN顯示問題Oracle
- 友好的顯示小數ORACLEOracle
- 顯示oracle執行時間Oracle
- java桌面顯示出錯,顯示佔半邊,顯綠色。Java
- Mac顯示/不顯示隱藏檔案教程!Mac
- IOS APP安裝後不在桌面顯示圖示、改變圖示等iOSAPP
- 電腦顯示器破圖了怎麼辦修復 顯示器螢幕橫條紋修復教程
- css使文字顯示兩行後顯示省略號CSS
- 華為遊戲浮標不顯示或顯示異常遊戲
- Geoserver + MySQL實現圖層顯示和文字顯示ServerMySql
- css 一行顯示超出部分顯示省略號CSS
- 關於UIImageView的顯示問題——居中顯示或者UIView
- CSS實現限制顯示的字數,超出顯示"..."CSS
- Activity背景顯示app圖示APP
- 介面的實現方式(顯示和隱示)及協變和逆變
- 關於oracle日期格式顯示格式Oracle
- Oracle中顯示阻塞樹的SQLOracleSQL
- Dev RadioGroup 用法(項橫排顯示、項選中)dev