Выберите «Отдельные записи» из таблицы. - PullRequest
0 голосов
/ 08 мая 2019

Я хотел бы написать запрос, выбрав набор данных из рисунка ниже Набор данных от migration_data_temp table

enter image description here

Я хочу, чтобы данные были похожи на приведенное ниже изображение, которое будет заполнять фактическую таблицу migration_data. Обратите внимание, хотя имя migration_data_temp не GTT, считайте его промежуточной таблицей

enter image description here

Я попробовал аналитическую функцию, но не повезло, также я попытался с опцией SELECT Distinct ..

Настольный скрипт

CREATE TABLE RIM_API_USER.MIGRATION_DATA_TEMP
(
  ID             NUMBER         GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  NAME           VARCHAR2(250 BYTE),
  TEMPLATE_NAME  VARCHAR2(250 BYTE),
  PARENT_NAME    VARCHAR2(250 BYTE),
  PORT_OF_ENTRY  VARCHAR2(100 BYTE)
)


Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME)Values (1, 'TN - People - 2019- Mode of Migration', 'Mode of Migration Template');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME)Values(2, '2 Migration', '2 Migration', 'TN - People - 2019- Mode of Migration');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME)Values(3, '2.2 Mode of Migration', '2.2 Mode of Migration', '2 Migration');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(4, '2.2.T Transportation', '2.2.T Transportation', '2.2 Mode of Migration', 'NY');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values (5, '2.2.T.1 Air', '2.2.T.1 Air', '2.2.T Transportation', 'NY');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(6, '2.2.T.1.1 American Airways', '2.2.T.1.1 American Airways', '2.2.T.1 Air', 'NY');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(7, '2.2.T.1.2 Southwest Airlines', '2.2.T.1.2 Southwest Airlines', '2.2.T.1 Air', 'NY');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(8, '2.2.T.1.3 Spirit Airlines', '2.2.T.1.3 Spirit Airlines', '2.2.T.1 Air', 'NY');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(9, '2.2.T.1.4 Allegiant Airlines', '2.2.T.1.4 Allegiant Airlines', '2.2.T.1 Air', 'NY');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME)Values(10, '2 Migration', '2 Migration', 'TN - People - 2019- Mode of Migration');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME)Values(11, '2.2 Mode of Migration', '2.2 Mode of Migration', '2 Migration');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(12, '2.2.T.2 Rail', '2.2.T.2 Rail', '2.2.T Transportation', 'IL');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(13, '2.2.T.2.1 Amtrak', '2.2.T.2.1 Amtrak', '2.2.T.2 Rail', 'IL');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(14, '2.2.T.2.2 Metro Train', '2.2.T.2.2 Metro Train', '2.2.T.2 Rail', 'IL');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(15, '2.2.T.2.3 Path Transfer', '2.2.T.2.3 Path Transfer', '2.2.T.2 Rail', 'IL');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME)Values(16, '2 Migration', '2 Migration', 'TN - People - 2019- Mode of Migration');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME)Values(17, '2.2 Mode of Migration', '2.2 Mode of Migration', '2 Migration');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(18, '2.2.T.3 Road', '2.2.T.3 Road', '2.2.T Transportation', 'CA');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(19, '2.2.T.3.1 Car', '2.2.T.3.1 Car', '2.2.T.3 Road', 'CA');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(20, '2.2.T.3.2 Bike', '2.2.T.3.2 Bike', '2.2.T.3 Road', 'CA');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(21, '2.2.T.3.3 Cycle', '2.2.T.3.3 Cycle', '2.2.T.3 Road', 'CA');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(22, '2.2.T.3.4 Walking', '2.2.T.3.4 Walking', '2.2.T.3 Road', 'CA');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME)Values(23, '2 Migration', '2 Migration', 'TN - People - 2019- Mode of Migration');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME)Values(24, '2.2 Mode of Migration', '2.2 Mode of Migration', '2 Migration');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(25, '2.2.T.4 Sea', '2.2.T.4 Sea', '2.2.T Transportation', 'VA');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(26, '2.2.T.4.1 Boat', '2.2.T.4.1 Boat', '2.2.T.4 Sea', 'VA');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(27, '2.2.T.4.2  Ship', '2.2.T.4.2  Ship', '2.2.T.4 Sea', 'VA');
Insert into RIM_API_USER.MIGRATION_DATA_TEMP(ID, NAME, TEMPLATE_NAME, PARENT_NAME, PORT_OF_ENTRY)Values(28, '2.2.T.4.3 yacht', '2.2.T.4.3 yacht', '2.2.T.4 Sea', 'VA');
COMMIT;

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Пожалуйста, попробуйте это:

select a.id, a.name, a.template_name, a.parent_name, a.port_of_entry
from (
select t.*, 
row_number() over (partition by t.name, t.template_name, t.parent_name order by id) rnk
from migration_data_temp t )a
where a.rnk = 1
order by a.id

Результат теста:

DB <> Fiddle

0 голосов
/ 08 мая 2019

Я догадываюсь, правильно? Вы хотите выбрать несколько столбцов, применяя различные только к одному столбцу? Если да здесь является решением. Если нет, скажите мне точно

...