我被要求绘制SQL Server中保存的数据。我可以使用我提供的工具。
但是我被要求计算数据库中的记录数,根据年份的最后两位数字和周数字组合对它们进行分组
例如,2011年的第一周将是1101年 例如,2010年的第十五周将是1015
(注意需要一周作为2个字符)所以索引按字母顺序
我尝试了各种组合,例如
select CASE WHEN DATENAME(ww,j.requestedat) <= 9
THEN (CAST('0' AS VARCHAR(1)) + CAST(DATENAME(ww,j.requestedat) AS VARCHAR(1)))
ELSE CAST(DATENAME(ww,j.requestedat) AS VARCHAR(2))
END AS WeekNumber
, right(DateName(yy, j.requestedat),2) + WeekNumber as YYWW
from
facts_reactive.dbo.jobs j
order by j.requestedat
但都失败了。
感激地接受任何帮助/指导。
罗布
答案 0 :(得分:1)
试试这个:
select
right(DateName(yy, wn.requestedat),2) + wn.WeekNumber as YYWW
from
(
select CASE WHEN DATENAME(ww,j.requestedat) <= 9
THEN (CAST('0' AS VARCHAR(1)) + CAST(DATENAME(ww,j.requestedat) AS VARCHAR(1)))
ELSE CAST(DATENAME(ww,j.requestedat) AS VARCHAR(2))
END as WeekNumber, j.requestedat
from
facts_reactive.dbo.jobs j
) AS wn
order by wn.requestedat
答案 1 :(得分:1)
试试这个:
SELECT RIGHT(YEAR(j.requestedat),2) + RIGHT('00'+CAST(DATEPART(ww,j.requestedat) AS VARCHAR(2)),2) YYWW
FROM facts_reactive.dbo.jobs j
ORDER BY j.requestedat
答案 2 :(得分:1)
SELECT
YYWW = RIGHT(YEAR(j.requestedat) * 100 + DATEPART(ww, j.requestedat), 4)
FROM facts_reactive.dbo.jobs j
ORDER BY j.requestedat