SQL-92 Запрос для поиска самой ранней даты, зависящей от изменения значения столбца - PullRequest
2 голосов
/ 01 марта 2010

Я запрашиваю систему данных с интерфейсом OLEDB, который поддерживает SQL92. Моя проблема с запросами эквивалентна той, что решена здесь: SQL-запрос для поиска самой ранней даты, зависящей от изменения значения столбца , но решение, предоставленное там и скопированное ниже, слишком продвинуто для SQL92:

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 

Как будет выглядеть совместимая с SQL92 версия этого решения?

1 Ответ

1 голос
/ 01 марта 2010

Использование:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...