Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何根据标志或最新更新时间戳获取不同的记录?_Sql_Database_Oracle_Sql Insert_Create Table - Fatal编程技术网

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)?