Αν κατάλαβα καλά έχεις περίπου το παρακάτω schema.
TABLE [Trader](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](64) NOT NULL,
[Phone] [nvarchar](64) NOT NULL,
[TransactionType](
[Id] [int] NOT NULL,
[Name] [nvarchar](64) NOT NULL,
[Transaction](
[Id] [int] IDENTITY(1,1) NOT NULL,
[TransactionTypeId] [int] NOT NULL,
[TraderId] [int] NOT NULL,
[TransactionDate] [smalldatetime] NOT NULL,
[OrderId] [int] NULL,
TABLE [Order](
[Id] [int] IDENTITY(1,1) NOT NULL,
[OrderDate] [smalldatetime] NOT NULL,
[TraderId] [int] NOT NULL,
Και θέλεις το παρακάτω stored Proc
CREATE PROCEDURE [dbo].[GetTraderWithPendingOrders]
AS
BEGIN
Select
Trader.Id As TraderId ,
Trader.Name,
Trader.Phone,
OrderCount.PendingOrderCount
from
Trader inner join
(
select
ts.TraderId,
count(max_date.OrderId) As PendingOrderCount
from
[Transaction] ts inner join
(
SELECT
t.OrderId,
MAX(t.TransactionDate) As TransactionDate
FROM
[Transaction] t
Group By t.OrderId
) max_Date
on (ts.OrderId= max_Date.OrderId And max_Date.TransactionDate=ts.TransactionDate and ts.TransactionTypeId=1) /* TransactionType=PendingPickup */
Group by ts.TraderId
) OrderCount on OrderCount.TraderId=Trader.Id
END
GO
Ελέγχω την τελευταία κατάσταση της κίνησης με την ημ/νία , θα μπορούσες να έχεις ενα πεδίο με μεγαλύτερη ακρίβεια για τον έλεγχο.
Είμαι σίγουρος ότι υπάρχουν ποίο απλοί τρόποι για να πετύχεις το ίδιο αποτέλεσμα, προς το παρόν μόνο αυτό μου έρχετε στο μυαλό.
TransactionType (Table) Έχει τις παρακάτω γραμμές
Id Name
1 PendingPickup
2 PendingInvoice
3 Complete
Μπλουγουράς Γιάννης
Wizcom O.E.