你好,你能帮我解决这个对我来说很难的基本问题吗? 我只想为供应商透视行,但我无法做到这一点.
这是我的数据集,只有几行-
CREATE TABLE "PROB" ("VENDOR" VARCHAR2(26), "CATEGORY" VARCHAR2(26))
Insert into PROB (VENDOR,CATEGORY) values ('United co','bread');
Insert into PROB (VENDOR,CATEGORY) values ('United co','salt');
Insert into PROB (VENDOR,CATEGORY) values ('ali dist co','eggs');
Insert into PROB (VENDOR,CATEGORY) values ('ali dist co','meat');
Insert into PROB (VENDOR,CATEGORY) values ('ali dist co','yogurt');
Insert into PROB (VENDOR,CATEGORY) values ('marian srl','potato');
这是输出结果:
United co ali dist co marian srl
bread eggs potato
salt meat
yogurt
除了LIST_AGG之外,我已经try 过但没有LOOK,但我希望所有内容都在多行上
SELECT *
FROM (
SELECT VENDOR, CATEGORY
FROM PROB
)
PIVOT (
LISTAGG(CATEGORY, ', ') WITHIN GROUP (ORDER BY CATEGORY)
FOR VENDOR IN (
'United co' AS United_co,
'ali dist co' AS ali_dist_co,
'marian srl' AS marian_srl
)
);
select
max(case when vendor='United co' then category end) as united_co,
max(case when vendor='ali dist co' then category end) as ali_dist,
max(case when vendor='marian srl' then category end) as marian_srl
from (select a.*,
row_number() over (partition by vendor order by category) as rn
from prob a
) t
group by vendor, rn;
SELECT UNITED_CO, ALI_DIST, MARIAN_SRL
FROM (
SELECT VENDOR, CATEGORY, row_number() over (partition by vendor order by vendor) as seqnum
FROM PROB
)
PIVOT (
max(CATEGORY)
FOR seqnum IN (1 AS UNITED_CO , 2 AS ALI_DIST ,3 MARIAN_SRL)
);
谢谢