Если у меня есть таблица, содержащая информацию о расписании, которая подразумевает конкретные даты, есть ли инструкция SQL, которая может быть записана для преобразования этой информации в реальные строки, возможно, с использованием какого-либо типа CROSS JOIN?
Рассмотрим таблицу графика платежей со следующими столбцами:
- StartDate - дата начала расписания (в этот день должен быть произведен первый платеж)
- Срок - продолжительность в месяцах расписания
- Частота - количество месяцев между повторениями
- PaymentAmt - сумма платежа: -)
SchedID StartDate Term Frequency PaymentAmt
-------------------------------------------------
1 05-Jan-2003 48 12 1000.00
2 20-Dec-2008 42 6 25.00
Существует ли один оператор SQL, позволяющий перейти от приведенного выше к следующему?
Running
SchedID Payment Due Expected
Num Date Total
--------------------------------------
1 1 05-Jan-2003 1000.00
1 2 05-Jan-2004 2000.00
1 3 05-Jan-2005 3000.00
1 4 05-Jan-2006 4000.00
1 5 05-Jan-2007 5000.00
2 1 20-Dec-2008 25.00
2 2 20-Jun-2009 50.00
2 3 20-Dec-2009 75.00
2 4 20-Jun-2010 100.00
2 5 20-Dec-2010 125.00
2 6 20-Jun-2011 150.00
2 7 20-Dec-2011 175.00
Я использую MS SQL Server 2005 (нет надежды на обновление в ближайшее время), и я уже могу сделать это, используя переменную таблицы и цикл while, но казалось, что будет применяться какой-то тип CROSS JOIN, но я не знаю как это может работать.
Ваши мысли ценятся.
РЕДАКТИРОВАТЬ: Я на самом деле использую SQL Server 2005 , хотя я первоначально сказал 2000. Мы не так отстали, как я думал. К сожалению.