【问题标题】:sql find most recent recordsql查找最近的记录
【发布时间】:2012-08-13 13:13:01
【问题描述】:

我有以下查询,它获取符合给定条件的记录。下面展示了表中的两条记录以及查询的结果。我想要的是根据EntryDate 列获取最近发生的事件。

0 A 2012-08-09 00:00:00.000 N0206527 N0168639 NULL 09 420202 LTD False  
0 A 2012-08-08 00:00:00.000 N0206527 N0168639 NULL 09 420202 LTD False

DCMNumber CustomerDivision CustomerSerial Product PriorNonDenied    
N0064819  09               420202     LTD     2


SET @firstDayOfCurrentMonth = DATEADD(m,DATEDIFF(M,0,GETDATE()),0)
SELECT  DCMNumber, CustomerDivision, CustomerSerial, Product, COUNT(*) AS PriorNonDenied
                             FROM   cauAssignedClaim 
                             WHERE  RecordType = 'A' AND  
                                   EscFromSTD = '0' AND  
                                   ([Status] <> 'DE' OR  
                                    [Status] IS NULL) AND  
                                   CONVERT(VARCHAR(10), EntryDate, 110) BETWEEN  
                                       CASE WHEN Product = 'LTD' THEN   CONVERT(VARCHAR(10), @firstDayOfCurrentMonth, 110)    
                                       ELSE CONVERT(VARCHAR(10), DATEADD(Day, -7, GETDATE()-1), 110)  
                                       END  
                                       AND CONVERT(VARCHAR(10), GETDATE()-1, 110) 
                             GROUP BY [Status],  
                                      DCMNumber,  
                                      CustomerDivision,  
                                      CustomerSerial,  
                                      Product  

谢谢, 布拉德

【问题讨论】:

    标签: sql


    【解决方案1】:

    我想你想要这样的东西

    SELECT a.EntryDate, a.DCMNumber, CustomerDivision, CustomerSerial, Product, WhateverElse, etc
    FROM cauAssignedClaim b INNER JOIN
    
    (SELECT MAX(DCMNumber) DCMNumber, MAX(EntryDate) EntryDate
    FROM cauAssignedClaim
    GROUP BY DCMNumber) a
    
    ON ( a.DCMNumber = b.DCMNumber AND a.EntryDate = b.EntryDate )
    

    这将为您提供所有唯一 DCM 编号及其最新日期的列表。然后,您可以将其与您需要的所有其他数据一起加入。最终结果将返回带有最新信息的每个 DCMNumber。

    如果这不是您想要的,请添加更多详细信息,以便我们更好地了解您的需求。

    【讨论】:

      【解决方案2】:

      MySQL:

      SELECT * FROM table ORDER BY EntryDate DESC LIMIT 1
      

      MSSQL:

      SELECT TOP 1 * FROM ORDER BY EntryDate DESC
      

      【讨论】:

      • 请注意,这仅对 MySQL 有效。 LIMIT 不是标准 SQL。
      • 使用 TOP 1 仅返回行。我有几条记录,其中 DCMNumber 被分配了不同的索赔编号。我想要获得的是所有索赔的最新 DCMNumber。所以最后我会有一个分配给 DCMNumber 的最新声明列表。这样做的原因是,在多次分配同一个索赔编号的情况下,我不想包含多个记录。
      【解决方案3】:

      试试这个

      Select Top 1 col1 From Table Order by MyDate DESC
      

      【讨论】:

      • TOP 1 我只拿回了一条记录。在表中,我有几个分配给特定 DCMNumber 的声明。我需要的是获取特定 DCMNumber 的每个声明的最后一个实例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多