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
...
由于本人刚接触oracle,仅处于一知半解的状态。仅会门店是固定的写法,
但如果门店不是固定的,就不知如何下手了,也曾搜索过一些类似的帖子,但都不是看得很明白,
特来此开帖,望各位大虾不吝赐教。
------解决方案--------------------一SQL暂时无解,求大神
------解决方案--------------------动态构造,这个很容易懂吧
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 '
------解决方案---------------