I am looking to get the top two activity dates for each unique id in my query. when i select distinct it only brings the top two assuming i don't have a proper group by to get it done can anyone help??
Select Contacts.ContactID AS "Partner ID", Activity.ActivityDate AS "Activity Date"
FROM Contacts WITH(NOLOCK) LEFT OUTER JOIN Activity WITH(NOLOCK) ON Contacts.UniqueID = Activity.ContactID
LEFT OUTER JOIN dbo.[v_LastGift] (nolock) ON Contacts.UniqueID = v_LastGift.ContactID
WHERE (Contacts.UniqueID IN (SELECT Contacts.UniqueID AS "Contacts.UniqueID" FROM Contacts WITH(NOLOCK)
WHERE ((SELECT TOP 1 Activity.Value FROM Activity WITH(NOLOCK) WHERE Activity.ContactID = Contacts.UniqueID and Activity.Value > '0'
ORDER BY Activity.Activitydate ASC) >= 1.00 AND Contacts.UniqueID IN (SELECT Invoices.ContactID AS "InvoiceItems.ContactID"
FROM InvoiceItems WITH(NOLOCK) JOIN Invoices WITH(NOLOCK) ON InvoiceItems.InvoiceID = Invoices.UniqueID
WHERE (Invoices.ItemNet + Invoices.ShippingCost + Invoices.HandlingCost + Invoices.GiftNet + Invoices.TaxAmount >= 1.00)
GROUP BY Invoices.ContactID
HAVING SUM(InvoiceItems.Quantity) >= 1))) AND isnull(dbo.[v_LastGift].GiftCount,0) >= 2)
↧