2012-08-13 3 views
0

J'ai la requête suivante qui obtient un décompte des enregistrements avec les critères donnés. Ce qui suit montre les deux enregistrements de la table et les résultats de la requête. Ce que je veux, c'est juste obtenir l'occurrence la plus récente basée sur la colonne EntryDate.sql rechercher le dossier le plus récent

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 

Merci, Brad

+1

Quels SGBDR utilisez-vous? – Yuck

+0

On dirait que c'est SQL Server – codingbiz

+0

On dirait MSSQL –

Répondre

1

MySQL:

SELECT * FROM table ORDER BY EntryDate DESC LIMIT 1 

MSSQL:

SELECT TOP 1 * FROM ORDER BY EntryDate DESC 
+0

Juste pour noter, ceci est valable pour MySQL seulement. 'LIMIT' n'est pas standard SQL. – Yuck

+0

Mise à jour pour montrer des exemples pour les deux. –

+0

L'utilisation de TOP 1 ne renvoie que sur la ligne. J'ai plusieurs enregistrements où DCMNumber est attribué différents numéros de réclamation. Ce que j'essaie d'obtenir est le dernier DCMNumber pour toutes les réclamations. Donc, à la fin, je vais avoir une liste des dernières revendications assignées à un DCMNumber. La raison en est que je ne veux pas inclure plus d'un enregistrement dans les cas où le même numéro de demande a été attribué plus d'une fois. – user1331734

1

Essayez cette

Select Top 1 col1 From Table Order by MyDate DESC 
+0

Avec TOP 1 je ne récupère qu'un seul enregistrement. Dans le tableau, j'ai plusieurs revendications assignées à un DCMNumber particulier. Ce dont j'ai besoin est d'obtenir la dernière instance de chaque réclamation pour un DCMNUmber particulier. – user1331734

4

Je pense que vous voulez quelque chose comme ça

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) 

Cela vous donnera une liste de tous les DCMNumbers uniques et leur dernier jour. Ensuite, vous pouvez joindre cela avec tout le reste des données dont vous avez besoin. Le résultat final renvoie chaque DCMNumber avec les dernières informations.

Si ce n'est pas ce que vous cherchez, ajoutez plus de détails pour que nous puissions mieux comprendre ce que vous recherchez.

Questions connexes