Я не уверен в терминологии здесь, поэтому позвольте мне привести пример. У меня есть этот запрос:
SELECT * FROM Events
--------------------
Id Name StartPeriodId EndPeriodId
1 MyEvent 34 32
Здесь PeriodIds определяют, как долго длится событие, считайте его неделями года, указанными в другой таблице, если это поможет. Обратите внимание, что EndPeriodId не обязательно последовательно после StartPeriodId. Чтобы я мог сделать это:
SELECT * FROM Periods WHERE Id = 34
-----------------------------------
Id StartDate EndDate
34 2009-06-01 2009-08-01
Пожалуйста, не останавливайтесь на этой структуре, так как это всего лишь пример, а не то, как она на самом деле работает. Что мне нужно сделать, это придумать этот набор результатов:
Id Name PeriodId
1 MyEvent 34
1 MyEvent 33
1 MyEvent 32
Другими словами, мне нужно выбрать строку события для каждого периода, в котором событие существует. Я могу легко рассчитать информацию о Периоде (32, 33, 34), но моя проблема заключается в том, чтобы извлечь ее в одном запросе.
Это в SQL Server 2008.