Sql 如何根据标志或最新更新时间戳获取不同的记录?
我试图根据以下条件获取记录 表格:存储 模式:Sql 如何根据标志或最新更新时间戳获取不同的记录?,sql,database,oracle,sql-insert,create-table,Sql,Database,Oracle,Sql Insert,Create Table,我试图根据以下条件获取记录 表格:存储 模式: create table store (product varchar(50),product_id number,product_type varchar(10),product_flag char(1),product_upd_dt Date); insert into store(product,product_id,product_type,product_flag,product_upd_dt)values('Apple',123,'GA
create table store (product varchar(50),product_id number,product_type varchar(10),product_flag char(1),product_upd_dt Date);
insert into store(product,product_id,product_type,product_flag,product_upd_dt)values('Apple',123,'GALA','Y','16-MAR-20 06.49.05');
insert into store(product,product_id,product_type,product_flag,product_upd_dt)values('Apple',123,'GALA','N','16-MAR-20 06.49.05');
insert into store(product,product_id,product_type,product_flag,product_upd_dt)values('Apple',134,'JAZZ','N','16-MAR-20 06.49.05');
insert into store(product,product_id,product_type,product_flag,product_upd_dt)values('Apple',134,'JAZZ','N','14-MAR-20 06.49.05');
insert into store(product,product_id,product_type,product_flag,product_upd_dt)values('Apple',134,'JAZZ','N','15-MAR-20 06.49.05');
insert into store(product,product_id,product_type,product_flag,product_upd_dt)values('Apple',13,'ENVY','Y','15-MAR-20 06.49.05');
commit;
1) 基于此,我希望根据product_flag='Y'获取product_id
2) 如果产品标识为“N”,则获取最新更新的产品标识
3) 一个产品可以映射到相同的产品id,但不同的产品类型
4) 同一行可以重复,但在产品中存在差异
这里有一个例子
输入图像
这是预期的输出-
输出图像
提前感谢。啊,1-4代表方向,而不是单独的问题。。。对不起,我最初误解了这个问题 这个怎么样
SQL> select product,
2 product_id,
3 product_type,
4 max(product_flag) product_Flag,
5 max(product_upd_dt) product_upd_dt
6 from store
7 where product_id in (select product_id
8 from store
9 where product_flag = 'Y'
10 )
11 group by product, product_id, product_type;
PRODUCT PRODUCT_ID PRODUCT_TY P PRODUCT_UPD_DT
---------- ---------- ---------- - ------------------
Apple 134 ENVY Y 15-mar-20 06.49.05
Apple 123 GALA Y 16-mar-20 06.49.05
Apple 134 JAZZ N 16-mar-20 06.49.05
SQL>
你真正使用的是哪个数据库?我怀疑你是否使用MySQL、PostgreSQL和Oracle,是吗?我使用的是Oracle。这些是数据标准。很抱歉造成混淆。我想你知道这是两个独立的查询。但这应该在单个查询中实现。如果你看一下输出,你会更好地理解。对;在看到所需的输出后,我们找到了答案。请看一看修改后的查询。它部分工作。当我执行您的查询时,我得到了4条记录的输出。但我看到您的输出只有3条记录。我甚至还得到了这些记录,苹果134 JAZ N 14-MAR-20 06.49.05(应该删除)。对不起,我不明白您的意思。结果我得到了3行,它们与您想要的输出匹配。你在说什么“4张唱片”?什么改变了?除了最后一行的ID=13(根据您发布的第一个屏幕截图,它应该是134)?