Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 根据工作周数获取月份、季度_Sql Server - Fatal编程技术网

Sql server 根据工作周数获取月份、季度

Sql server 根据工作周数获取月份、季度,sql-server,Sql Server,我希望得到月和季度的基础上工作周数 例:如果工作周数是7,那么它在季度=1和月份=2 同样,如果WK=35,我应该能够得到季度=2和月份=8 依此类推。可能是一个处理此问题的函数 函数定义 试验 结果 几周还是别的什么?在一周中它会发生什么变化?假设您通过了7个工作周,您想要哪一年的季度和月份?我可以问一下为什么是函数而不是sp吗?sp会更好,但考虑到这是一个内联表函数,性能不应该是一个问题。 CREATE FUNCTION dbo.get_Quater_Month (@WeekofYear I

我希望得到月和季度的基础上工作周数

例:如果工作周数是7,那么它在季度=1和月份=2

同样,如果WK=35,我应该能够得到季度=2和月份=8


依此类推。

可能是一个处理此问题的函数

函数定义 试验 结果
几周还是别的什么?在一周中它会发生什么变化?假设您通过了7个工作周,您想要哪一年的季度和月份?我可以问一下为什么是函数而不是sp吗?sp会更好,但考虑到这是一个内联表函数,性能不应该是一个问题。
CREATE FUNCTION dbo.get_Quater_Month (@WeekofYear INT)
RETURNS Table 
AS
RETURN
(WITH X AS
 (
  SELECT TOP (CASE WHEN YEAR(GETDATE()) % 4 = 0 THEN 366 ELSE 365 END) 
      DATEADD(DAY 
             ,ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) -1
             , CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '0101' )      
                      DayNumber
  From master..spt_values
 )
SELECT DATEPART(QUARTER,MIN(DayNumber)) AS [QUARTER]
      ,DATEPART(MONTH,MIN(DayNumber))   AS [Month]
FROM X 
WHERE DATEPART(WEEK,DayNumber) = @WeekofYear)
SELECT * FROM dbo.get_Quater_Month (7)
╔═════════╦═══════╗
║ QUARTER ║ Month ║
╠═════════╬═══════╣
║    1    ║   2   ║
╚═════════╩═══════╝