Tsql 如何提取会计周日历的第一个日期
我在SQL Server 2012 Express中有一个会计日历表。我想能够拉每个星期的第一个日期,并显示在一行从下周开始。也就是说,我希望第一行显示2013年2月9日,然后是2013年9月9日,2013年9月16日,等等。下面是我如何构建表格以及一些数据Tsql 如何提取会计周日历的第一个日期,tsql,sql-server-2012-express,Tsql,Sql Server 2012 Express,我在SQL Server 2012 Express中有一个会计日历表。我想能够拉每个星期的第一个日期,并显示在一行从下周开始。也就是说,我希望第一行显示2013年2月9日,然后是2013年9月9日,2013年9月16日,等等。下面是我如何构建表格以及一些数据 [dbo].[FiscalCalendar]( [FiscalDate] [datetime] NULL, [FiscalWeekNum] [smallint] NULL, [FiscalMonthNum] [sma
[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
这很好,但我也需要进入下一年,它似乎在52周停止…好吧,现在我需要知道如何提取每个日期以获得行标题。我希望得到2013年9月2日的一周,2013年9月9日的一周,等等。你是说列标题吗?也许你应该开始一个新问题。
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;