Использование SQL Server. У меня есть следующий вопрос: Я создаю КТР на основе начала/окончания срока, который генерирует набор строк для каждой недели между двумя датами, как это:SQL Server: использование результатов строки CTE в виде столбцов
StartDate EndDate
2013-02-25 00:00:00.000 2013-03-03 00:00:00.000
2013-04-01 00:00:00.000 2013-04-07 00:00:00.000
Теперь я хотел бы использовать неделю строки в другом выражении SQL в виде столбцов, поэтому COLUMN1 | НЕДЕЛЯ 1 | НЕДЕЛЯ 2 | НЕДЕЛЯ 3 ...
Я не уверен, как это осуществить. Мой оператор CTE приведен ниже.
Любые идеи?
Спасибо!
declare @sDate datetime,
@eDate datetime
select @sDate = '2013-02-25',
@eDate = '2013-04-25';
WITH Weeks_CTE (StartDate, EndDate)
AS
(
select @sDate StartDate, DATEADD(wk,DATEDIFF(wk, 0, @sDate), 6) EndDate
union all
select dateadd(ww, 1, StartDate),
dateadd(ww, 1, EndDate)
from Weeks_CTE
where dateadd(ww, 1, StartDate)<= @eDate
)
Непонятно из вашего вопроса, что вы хотите вернуть. Можете ли вы опубликовать образцы данных и ожидаемые результаты. –
В качестве побочного примечания лучше [не использовать 'BETWEEN' с типами даты/времени/времени, особенно в SQL Server] (http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what -do-between-and-the-devil-have-in-common.aspx) Вы не используете этот оператор здесь, но вы можете получить тот же эффект, учитывая, что последняя строка: 'где dateadd (ww, 1, StartDate) <= @ eDate'. Кроме того, я с подозрением отношусь к тому, что вы делаете вещи через _week_, когда вы добавляете ** 6 ** дней .... –