Je suppose qu'il y a d'autres façons de faire cela, mais je pense que cela fonctionne :
DECLARE
@OrganizationID varchar(40)
SET @OrganizationID = 'SMESM1HTOVEOVE'
SELECT
ro.ResourceID,
ro.OrganizationID,
max(ro.EffectiveDate)
FROM
ResourceOrganization ro
WHERE
ro.OrganizationID = @OrganizationID
GROUP BY
ro.ResourceID,
ro.OrganizationID
HAVING
max(ro.EffectiveDate) = (
SELECT
max(EffectiveDate)
FROM
ResourceOrganization
WHERE
ResourceID = ro.ResourceID)
Voici un SQLFiddle jouer avec.
EDIT :En fait, c'est probablement trop compliqué. Essayez celui-ci :
DECLARE
@OrganizationID varchar(40)
SET @OrganizationID = 'SMESM1HTOVEOVE'
SELECT
ro.ResourceID,
ro.OrganizationID,
ro.EffectiveDate
FROM
ResourceOrganization ro
WHERE
ro.OrganizationID = @OrganizationID
AND ro.EffectiveDate = (
SELECT
max(EffectiveDate)
FROM
ResourceOrganization
WHERE
ResourceID = ro.ResourceID)