J'ai une table comme ci-dessousSQL: Utilisation de Top 1 dans la requête UNION avec Trier par
Rate Effective_Date
---- --------------
5.6 02/02/2009
5.8 05/01/2009
5.4 06/01/2009
5.8 12/01/2009
6.0 03/15/2009
je suis censé trouver les tous les tarifs qui sont efficaces pour date et après. Donc, pour obtenir le taux effectif actuel, j'utilise
SELECT TOP 1 * from table
where effective_date < '05/05/2009'
order by effective date desc
pour les taux après la date de la requête est
SELECT * from table
where effective_date > '05/05/2009'
Pour combiner ces deux résultat j'utilise un syndicat comme
SELECT TOP 1 * from table
where effective_date < '05/05/2009'
order by effective date desc
UNION
SELECT * from table
where effective_date > '05/05/2009'
Le résultat attendu est
Rate Effective Date
---- --------------
5.8 05/01/2009
5.4 06/01/2009
5.8 12/01/2009
6.0 03/15/2009
Mais j'obtenir le résultat réel
Rate Effective Date
---- --------------
5.6 02/02/2009
5.4 06/01/2009
5.8 12/01/2009
6.0 03/15/2009
Je n'ai pas la moindre idée de pourquoi cela se produit? Aucune suggestion?
Je ne suis pas sûr que vos "résultats attendus" sont en fait les résultats que vous attendez .. 15/03/2009 est le "dernier avant dernier" record "précédent" avant votre date de recherche de '5/5/2009 '.. vous devriez seulement avoir 3 enregistrements dans votre jeu de résultats attendu. – datacop