Je ne suis pas sûr de la terminologie ici, alors laissez-moi donner un exemple. J'ai cette requête:Rejoindre la table dérivée
SELECT * FROM Events
--------------------
Id Name StartPeriodId EndPeriodId
1 MyEvent 34 32
Ici, les PeriodIds préciser combien de temps l'événement dure, penser comme semaines de l'année indiquée dans une autre table si cela aide. Notez que EndPeriodId n'est pas nécessairement séquentiel après le StartPeriodId. Alors que je pouvais faire ceci:
SELECT * FROM Periods WHERE Id = 34
-----------------------------------
Id StartDate EndDate
34 2009-06-01 2009-08-01
S'il vous plaît ne vous attardez pas sur cette structure, car il est seulement un exemple et non comment cela fonctionne réellement. Ce que je dois faire est de venir avec ce jeu de résultats:
Id Name PeriodId
1 MyEvent 34
1 MyEvent 33
1 MyEvent 32
En d'autres termes, je dois sélectionner une ligne d'événement pour chaque période où l'événement existe. Je peux facilement calculer les informations de période (32, 33, 34), mais mon problème consiste à les extraire en une seule requête.
C'est dans SQL Server 2008.
Pas exactement, car comme je le disais dans la question, « avis que le EndPeriodId est séquentiellement pas nécessairement après la StartPeriodId ». Cela signifie que vous ne pouvez pas compter sur BETWEEN et devez regarder les dates réelles des périodes. –
On dirait que je peux utiliser quelque chose de similaire, je vérifie juste! –
Je t'aime Maximilian Mayerl. –