2010-03-01 5 views
2

J'interroge un système de données avec une interface OLEDB qui prend en charge SQL92. Mon problème de requête est équivalent à celui résolu ici: SQL Query to find earliest date dependent on column value changing, mais la solution fournie là et copié ci-dessous est trop avancée pour SQL92:SQL-92 La requête pour trouver la première date dépend de la modification de la valeur de la colonne

SELECT JobCodeId, MIN(LastEffectiveDate) AS mindate 
FROM ( 
     SELECT *, 
       prn - rn AS diff 
     FROM ( 
       SELECT *, 
         ROW_NUMBER() OVER (PARTITION BY JobCodeID 
            ORDER BY LastEffectiveDate) AS prn, 
         ROW_NUMBER() OVER (ORDER BY LastEffectiveDate) AS rn 
       FROM @tmp 
       ) q 
     ) q2 
GROUP BY 
     JobCodeId, diff 
ORDER BY 
     mindate 

Que serait une version compatible SQL92 de cette solution ressembler?

Répondre

1

Utilisation:

SELECT JobCodeId, 
     MIN(LastEffectiveDate) AS mindate 
    FROM (SELECT *, 
       prn - rn AS diff 
      FROM (SELECT *, 
         (SELECT CASE WHEN COUNT(*) = 0 THEN 1 ELSE COUNT(*) END 
          FROM @tmp t 
          WHERE t.JobCodeID = r.JobCodeID 
          AND t.LastEffectiveDate <= x.LastEffectiveDate) AS prn, 
         (SELECT COUNT(*) + 1 
          FROM @tmp t 
          WHERE t.LastEffectiveDate <= x.LastEffectiveDate) AS rn 
        FROM @tmp x) q 
     ) q2 
GROUP BY JobCodeId, diff 
ORDER BY mindate 
Questions connexes