【问题标题】:Select Distinct Records from the table从表中选择不同的记录
【发布时间】:2019-05-08 19:19:49
【问题描述】:

我想通过从下图中选择数据集来编写查询 数据集来自migration_data_temp table

我希望数据类似于下面的图像,它将填充实际表 migration_data,请注意即使名称是 migration_data_temp 它不是 GTT,也可以将其视为临时表

我尝试了分析函数但没有运气,我也尝试了 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;

【问题讨论】:

  • 对不起,我尝试了很多方法来格式化代码,我无法感谢
  • @Maheswran Ravishankar,非常感谢您的格式化,感谢您的帮助
  • 如果您在编辑问题时单击工具栏中的? 按钮,则会解释所有格式选项。它最终会引导你到:stackoverflow.com/help/formatting

标签: sql oracle distinct


【解决方案1】:

请试试这个:

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

【讨论】:

  • 感谢您的解决方案,感谢您的帮助
  • @vasanthanand 欢迎您。请接受答案以关闭此问题。
【解决方案2】:

我猜对了吗?您想通过仅对一列应用 distinct 来选择多列吗?如果是,here 是解决方案。如果没有,请准确告诉我

【讨论】:

  • 如果您想在不同的列中查看选定的列,也可以使用别名
  • Solutions 感谢您的回复,但我正在寻找 Gen Wan 的 Analytical Query
猜你喜欢
  • 2019-03-22
  • 2021-12-08
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
相关资源
最近更新 更多