问题描述
嗨,
我的问题是关于将行转换为列:
我已经如上采样了数据。我的要求是根据键列 (SAP_MATNR) 和banner_code将所有这些记录转置为列。
所以,我需要的输出有点类似于下面的格式。
在上面的输出中,SAP_MATNR列将用作键,banner_code值将与所有列标题后缀,并且相应的值将放置在此处。
我已经浏览了许多与枢轴查询相关的文章,但不知何故无法找到动态执行此操作的方法。列和行的列表仅是示例,因为在我的原始要求中,我有大约100个字段,其值必须以这种格式显示。请帮助我为此提供最佳的动态解决方案。
我的问题是关于将行转换为列:
BANNER_CODE/DIV_CODE/LEG_MATNR/SAP_MATNR/MAKTX/LEG_MATKL/SAP_MATKL/LEG_WHERL/SAP_WHERL/ CS/1/10137/58351/BAKE KING CHOCOLATE RICE 160G/384/10203004/34/SG/1 GH/1/36762/212615/MYOJO BOWL NDLE THAI TOM YAM 105G/499/10103001/34/SG/2 CS/1/36762/212615/MYOJO BOWL NDLE THAI TOM YAM 105G/499/10103001/34/SG/3 SE/1/212615/212615/MYOJO BOWL NDLE THAI TOM YAM 105G/11060104/10103001/SG/SG/4 GH/6/56256/276019/GMS SHIN MIN 1COPY/1862/60507006/34/SG/5 CS/6/56256/276019/GMS SHIN MIN 1COPY/1862/60507006/34/SG/6 SE/6/276019/276019/GMS SHIN MIN 1COPY/15040101/60507006/SG/SG/7 GH/6/27112/110005765/KOMAX BIOKIPS FOOD CONTAINER 3.1L/2108/60207005/17/CN/8
我已经如上采样了数据。我的要求是根据键列 (SAP_MATNR) 和banner_code将所有这些记录转置为列。
所以,我需要的输出有点类似于下面的格式。
SAP_MATNR/DIV_CODE_GH/DIV_CODE_CS/DIV_CODE_SE/LEG_MATNR_GH/LEG_MATNR_CS/LEG_MATNR_SE/LEG_MATKL_GH/LEG_MATKL_CS/LEG_MATKL_SE/SAP_MATKL_GH/SAP_MATKL_CS/SAP_MATKL_SE 58351//1///10137///384///10203004/ 212615/1/1/1/36762/36762/212615/499/499/11060104/10103001/10103001/10103001 276019/6/6/6/56256/56256/276019/1862/1862/15040101/60507006/60507006/60507006 110005765/6///27112////2108///60207005/
在上面的输出中,SAP_MATNR列将用作键,banner_code值将与所有列标题后缀,并且相应的值将放置在此处。
我已经浏览了许多与枢轴查询相关的文章,但不知何故无法找到动态执行此操作的方法。列和行的列表仅是示例,因为在我的原始要求中,我有大约100个字段,其值必须以这种格式显示。请帮助我为此提供最佳的动态解决方案。
专家解答
任何不在pivot子句中的列形成隐式group by。并且您可以在枢轴的第一部分中使用许多聚合。所以:
-使用子查询选择输出中所需的所有列
-聚合您想要枢转的所有列。确保你给他们化名!
-通过CS和GH进行枢轴banner_code。
这给出了:
-使用子查询选择输出中所需的所有列
-聚合您想要枢转的所有列。确保你给他们化名!
-通过CS和GH进行枢轴banner_code。
这给出了:
create table am_art_basic (
banner_code varchar2( 100 ),
div_code varchar2( 100 ),
leg_matnr varchar2( 100 ),
sap_matnr varchar2( 100 ),
maktx varchar2( 100 ),
leg_matkl varchar2( 100 ),
sap_matkl varchar2( 100 ),
leg_wherl varchar2( 100 ),
sap_wherl varchar2( 100 )
);
Insert into AM_ART_BASIC
(BANNER_CODE, DIV_CODE, LEG_MATNR, SAP_MATNR, MAKTX,
LEG_MATKL, SAP_MATKL, LEG_WHERL, SAP_WHERL)
Values
('SE', '6', '276019', '276019', 'GMS SHIN MIN 1COPY',
'15040101', '60507006', 'SG', 'SG');
Insert into AM_ART_BASIC
(BANNER_CODE, DIV_CODE, LEG_MATNR, SAP_MATNR, MAKTX,
LEG_MATKL, SAP_MATKL, LEG_WHERL, SAP_WHERL)
Values
('SE', '1', '212615', '212615', 'MYOJO BOWL NDLE THAI TOM YAM 105G',
'11060104', '10103001', 'SG', 'SG');
Insert into AM_ART_BASIC
(BANNER_CODE, DIV_CODE, LEG_MATNR, SAP_MATNR, MAKTX,
LEG_MATKL, SAP_MATKL, LEG_WHERL, SAP_WHERL)
Values
('CS', '1', '010137', '58351', 'BAKE KING CHOCOLATE RICE 160G',
'000384', '10203004', '34', 'SG');
Insert into AM_ART_BASIC
(BANNER_CODE, DIV_CODE, LEG_MATNR, SAP_MATNR, MAKTX,
LEG_MATKL, SAP_MATKL, LEG_WHERL, SAP_WHERL)
Values
('CS', '1', '036762', '212615', 'MYOJO BOWL NDLE THAI TOM YAM 105G',
'000499', '10103001', '34', 'SG');
Insert into AM_ART_BASIC
(BANNER_CODE, DIV_CODE, LEG_MATNR, SAP_MATNR, MAKTX,
LEG_MATKL, SAP_MATKL, LEG_WHERL, SAP_WHERL)
Values
('CS', '6', '056256', '276019', 'GMS SHIN MIN 1COPY',
'001862', '60507006', '34', 'SG');
Insert into AM_ART_BASIC
(BANNER_CODE, DIV_CODE, LEG_MATNR, SAP_MATNR, MAKTX,
LEG_MATKL, SAP_MATKL, LEG_WHERL, SAP_WHERL)
Values
('GH', '6', '027112', '110005765', 'KOMAX BIOKIPS FOOD CONTAINER 3.1L',
'002108', '60207005', '17', 'CN');
Insert into AM_ART_BASIC
(BANNER_CODE, DIV_CODE, LEG_MATNR, SAP_MATNR, MAKTX,
LEG_MATKL, SAP_MATKL, LEG_WHERL, SAP_WHERL)
Values
('GH', '6', '056256', '276019', 'GMS SHIN MIN 1COPY',
'001862', '60507006', '34', 'SG');
Insert into AM_ART_BASIC
(BANNER_CODE, DIV_CODE, LEG_MATNR, SAP_MATNR, MAKTX,
LEG_MATKL, SAP_MATKL, LEG_WHERL, SAP_WHERL)
Values
('GH', '1', '036762', '212615', 'MYOJO BOWL NDLE THAI TOM YAM 105G',
'000499', '10103001', '34', 'SG');
COMMIT;
select * from (
select sap_matnr, banner_code, leg_matkl, div_code
from am_art_basic
) pivot (
min(div_code) div_code,
min(leg_matkl) matkl
for ( banner_code ) in (
'CS' cs, 'GH' gh
)
);
SAP_MATNR CS_DIV_CODE CS_MATKL GH_DIV_CODE GH_MATKL
212615 1 000499 1 000499
276019 6 001862 6 001862
58351 1 000384
110005765 6 002108 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




