按最近日期订购日期-SQL 选择单个 ID

Posted

技术标签:

【中文标题】按最近日期订购日期-SQL 选择单个 ID【英文标题】:Selecting a single ID by the most recent date Order Date -SQL 【发布时间】:2016-03-27 19:19:56 【问题描述】:

我有一张像这样的表

Indvdl_Store_ID     Indvdl_ID     Order_ID     Order_Date 
    101               123         A000         12/24/2011 
    101               241         B002         01/01/2013
    101               201         Y180         01/01/2016 

由于我们有与 3 个不同 Indvdl_ID 关联的相同 Indvdl_Store_ID,我想根据订单日期选择/保留该 Indvdl_StoreID 的最新个人 ID,但仍保留与 Indvdl_Store_ID 关联的所有订单。所以我希望我的最终结果看起来像这样

Indvdl_Store_ID     Indvdl_ID     Order_ID     Order_Date 
    101               201         A000         12/24/2011 
    101               201         B002         01/01/2013
    101               201         Y180         01/01/2016

我尝试使用 row_number 进行重复数据删除,然后将最终结果加入到 Indvdl_store_ID 上的表中,但我似乎仍然无法获得正确的结果。如有任何帮助或建议,我将不胜感激。

提前致谢!

【问题讨论】:

【参考方案1】:

Oracle 设置

CREATE TABLE table_name (Indvdl_Store_ID, Indvdl_ID, Order_ID, Order_Date ) AS
SELECT 101, 123, 'A000', DATE '2011-12-24' FROM DUAL UNION ALL 
SELECT 101, 241, 'B002', DATE '2013-01-01' FROM DUAL UNION ALL
SELECT 101, 201, 'Y180', DATE '2016-01-01' FROM DUAL;

查询

SELECT Indvdl_Store_ID,
       MAX( Indvdl_ID ) KEEP ( DENSE_RANK LAST ORDER BY ORDER_DATE )
                        OVER ( PARTITION BY INDVDL_STORE_ID )
           AS Indvdl_ID,
       Order_ID,
       Order_Date
FROM   table_name;

输出

INDVDL_STORE_ID  INDVDL_ID ORDER_ID ORDER_DATE        
--------------- ---------- -------- -------------------
            101        201 A000     2011-12-24 00:00:00 
            101        201 Y180     2016-01-01 00:00:00 
            101        201 B002     2013-01-01 00:00:00 

【讨论】:

【参考方案2】:

可以使用内部连接和分组方式

select  b.Order_Date,  max(a.Indvdl_Store_ID), max( a.Indvdl_ID), b.Order_ID  
from my_table as b 
inner join my_table as a on  a.Indvdl_ID = b.Indvdl_ID
group by b.Order_Date

【讨论】:

以上是关于按最近日期订购日期-SQL 选择单个 ID的主要内容,如果未能解决你的问题,请参考以下文章

我想按最近的日期选择

SQL - 在按创建日期订购“重复重新推送”时显示一行两次

如何编辑我的 postgreSQL 查询以按日期选择几列的最新行

订购日期从最近到最远

jQuery UI 多个日期选择器:在按类设置选项后按 id 设置单个事件

SQL 从今天开始按日期选择