2013-08-29 2 views
0

У меня есть таблица финансового календаря в SQL Server 2012 Express. Я хотел бы иметь возможность вывести первую дату каждой недели и отображать их в строке, начиная со следующей недели. Я хочу, чтобы первая строка отображалась 9/2/2013, затем 9/9/2013, 9/16/2013 и т. Д. Вот как я построил таблицу вместе с некоторыми данными.Как вытащить первую дату календаря бюджетной недели

[dbo].[FiscalCalendar](
    [FiscalDate] [datetime] NULL, 
    [FiscalWeekNum] [smallint] NULL, 
    [FiscalMonthNum] [smallint] NULL, 
    [FiscalMonthName] [varchar](9) NULL, 
    [FiscalYear] [smallint] NULL 

FiscalDate   FiscalWeekNum FiscalMonthNum FiscalMonthName FiscalYear 
2013-09-02 00:00:00.000 36   9   September 2013 
2013-09-03 00:00:00.000 36   9   September 2013 
2013-09-04 00:00:00.000 36   9   September 2013 
2013-09-05 00:00:00.000 36   9   September 2013 
2013-09-06 00:00:00.000 36   9   September 2013 
2013-09-07 00:00:00.000 36   9   September 2013 
2013-09-08 00:00:00.000 36   9   September 2013 
2013-09-09 00:00:00.000 37   9   September 2013 
2013-09-10 00:00:00.000 37   9   September 2013 
2013-09-11 00:00:00.000 37   9   September 2013 
2013-09-12 00:00:00.000 37   9   September 2013 
2013-09-13 00:00:00.000 37   9   September 2013 
2013-09-14 00:00:00.000 37   9   September 2013 
2013-09-15 00:00:00.000 37   9   September 2013 

ответ

1
SET DATEFIRST 7; 

;WITH x AS 
(
    SELECT <cols>, rn = ROW_NUMBER() OVER 
    (PARTITION BY FiscalWeekNum ORDER BY FiscalDate) 
    FROM dbo.FiscalCalendar 
    WHERE FiscalDate >= CONVERT(DATE, GETDATE()) 
    AND DATEPART(WEEKDAY, FiscalDate) = 2 
) 
SELECT <cols> FROM x WHERE rn = 1; 
+0

Это прекрасно работает, но мне нужно идти в следующем году, а также и он останавливается на 52 недели, кажется, ... – tsqln00b

+0

@ tsqln00b должен работать за что ... –

+0

Хорошо, теперь я нужно знать, как тянуть каждую дату для заголовка строки. Я ищу, чтобы получить Неделю: 9/2/2013, Неделя: 9/9/2013 и т. Д. – tsqln00b

Смежные вопросы