我有一个名为电池的表,包含3列,BATTERY_PN, MSDS_FILE_NAME
和UNDOT_FILE_NAME
。表中的数据如下所示。
BATTERY_PN MSDS_FILE_NAME UNDOT_FILE_NAME
135259-0000 MSDS_ API-700-008685-005 40GP.PDF UNDOT_ API-700-008685-005 40GP.PDF
135259-0000 MSDS_ API-700-008685-005 40GP.PDF China Sea Cert API-700-008685-005 40GP.PDF
我想要写一条不会重复任何列名值的select语句。如果我有3个不同的MSDS_FILE_NAME
值,它应该显示3行,最后一行将在UNDOT_FILE_NAME
中显示NULL
。
预期输出:
BATTERY_PN MSDS_FILE_NAME UNDOT_FILE_NAME
135259-0000 MSDS_ API-700-008685-005 40GP.PDF UNDOT_ API-700-008685-005 40GP.PDF
135259-0000 China Sea Cert API-700-008685-005 40GP.PDF
发布于 2020-12-10 12:55:14
嗯,如果我理解正确的话,你可以使用row_number()
select BATTERY_PN,
(case when 1 = row_number() over (partition by battery_pn, MSDS_FILE_NAME order by UNDOT_FILE_NAME)
then MSDS_FILE_NAME
end) as MSDS_FILE_NAME,
UNDOT_FILE_NAME
from battery;
发布于 2020-12-10 13:53:18
create table battery(BATTERY_PN varchar2(100),MSDS_FILE_NAME varchar2(100),UNDOT_FILE_NAME varchar2(100));
insert into battery values('135259-0000', 'MSDS_ API-700-008685-005 40GP.PDF','UNDOT_ API-700-008685-005 40GP.PDF');
insert into battery values('135259-0000', 'MSDS_ API-700-008685-005 40GP.PDF',' China Sea Cert API-700-008685-005 40GP.PDF');
insert into battery values('135259-0000', 'MSDS_ API-700-008685-005 40GP.PDF','UNDOT_ API-700-008685-005 40GP.PDF');
insert into battery values('135259-0000', 'MSDS_ API-700-008685-005 40GP.PDF',' China Sea Cert API-700-008685-005 40GP.PDF');
SELECT battery_pn,(case when 1=rownum
then
msds_file_name END) as MSDS_FILE_NAME ,undot_file_name
FROM battery;
https://stackoverflow.com/questions/65234898
复制相似问题