Compte tenu du tableau suivant:
CREATE TABLE [dbo].[Orders](
[OrderID] [int] IDENTITY(1,1) NOT NULL,
[CustomerID] [int] NULL,
[OrderDate] [datetime] NULL,
CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED
(
[OrderID] ASC
)
)
la déclaration suivante montre la dernière commande passée par un client dans le délai suivi par les autres ordres.
;With OrderList As
(
Select Top 100 Percent * From dbo.Orders
Where OrderDate >= DateAdd(hh, -1, GetDate())
Order By OrderDate Desc
)
Select 'First' As DataType,
CustomerID, Min(OrderID) As OrderID, Min(OrderDate) As OrderDate
From OrderList
Group By CustomerID
Union All
Select 'Second' As DataType,
CustomerID, OrderID, OrderDate
From OrderList
Where OrderID Not In
(
Select Min(OrderID) As OrderID
From OrderList
Group By CustomerID
)
--Union All
--Select 'Raw' As DataType,
-- CustomerID, OrderID, OrderDate
--From Orders
La dernière partie est commentée car je l'ai utilisée pour tester si j'ai réellement les bonnes lignes. En résumé, l'instruction With limite les commandes de la table à celles passées dans la dernière heure en fonction de la date système en cours et les commande par date de commande. La première instruction (Sélectionnez 'First') extrait ensuite seulement les premières commandes par le client. La deuxième instruction (Sélectionnez 'Second') extrait ensuite tous les autres ordres qui ne figurent pas dans la première instruction.
Cela devrait fonctionner comme prévu, Muhammed, mais je n'ai pas 1000 lignes de lignes pour le tester. Les performances devraient être correctes car la partie With va créer une table temporaire avec laquelle travailler.
En utilisant une image comme exemple casse votre question si votre navigateur/proxy refuse de montrer le contenu 3ème partie. Y a-t-il une raison pour ne pas montrer un tableau de texte? – Unsliced
Un grand merci d'avoir mentionné cela, Unsliced. Il n'y a pas de raison particulière de montrer une question dans l'image. Je m'en occuperai à l'avenir. – Kashif