如何根据标志或最近的更新时间戳获取不同的记录?
How to get distinct records based on flag or most recent update timestamp?
我正在尝试根据以下条件获取记录。
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,'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_id 基于 product_flag='Y'
2)如果 product_flag 是 'N' 则获取最近更新的 product_id.
3)一个产品可以映射到相同的product_id,但不同的product_types。
4)同一行可以重复但不同的是product_upd_dt
这是一个例子。
输入图片
这是预期的输出-
输出图像
提前致谢。
啊,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>
我正在尝试根据以下条件获取记录。
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,'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_id 基于 product_flag='Y'
2)如果 product_flag 是 'N' 则获取最近更新的 product_id.
3)一个产品可以映射到相同的product_id,但不同的product_types。
4)同一行可以重复但不同的是product_upd_dt
这是一个例子。
输入图片
这是预期的输出-
输出图像
提前致谢。
啊,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>