【问题标题】:Selecting a single ID by the most recent date Order Date -SQL按最近日期订购日期-SQL 选择单个 ID
【发布时间】:2023-03-13 03:09:01
【问题描述】:

我有一张像这样的表

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 上的表中,但我似乎仍然无法获得正确的结果。如有任何帮助或建议,我将不胜感激。

提前致谢!

【问题讨论】:

    标签: sql oracle


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-25
        • 1970-01-01
        • 2012-03-01
        相关资源
        最近更新 更多