我需要通过组合的Year Week String对SQL Server 2003上保存的记录进行计数和分组

时间:2011-02-17 12:21:18

标签: sql sql-server string-concatenation

我被要求绘制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

但都失败了。

感激地接受任何帮助/指导。

罗布

3 个答案:

答案 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