月份&公司观点

时间:2014-11-10 19:30:16

标签: sql-server-2008-r2

我有一张桌子,里面有很多公司。我需要制作一个字典视图,它结合了一些公司数据,此外,还有过去3年的每个月,直到当月。 所以例如我会拉cmp_num,然后有年和月的额外列。重要的是,实际年份不是硬编码的,因为我希望在接下来的几年中继续工作。

cmp1, 2014, 11
cmp1, 2014, 10
cmp1, 2014, 09 
...etc for all months of 2014
cmp1, 2013, 01 
...etc for all months of 2013
cmp1, 2014
...etc for all  months of 2012
*and so on for all companies

我是否需要列出年份和月份的种子表?或者有没有办法在计算视图中动态创建它?在tsql中哪种方法会更好? 这是我需要加入年/月列表的东西的列表。

[cmp_code]
[Name]
[City]
[State]
[GroupNo]
[lastname]

1 个答案:

答案 0 :(得分:1)

正如我所说,你可以做到这两点。这是一个CTE,您可以使用它来生成3年前的列表。如果性能不够好,您应该考虑创建专用表。

WITH cte AS
(
  SELECT 1 AS id, DATEPART(YEAR,GETDATE()) AS [year], DATEPART(MONTH,GETDATE()) AS [month]

  UNION ALL

  SELECT 
    id + 1 AS id, 
    CASE WHEN [month] = 1 THEN [year]-1 ELSE [year] END AS [year],
    CASE WHEN [month] = 1 THEN 12 ELSE [month] - 1 END AS [month]
  FROM cte WHERE id < 36
)
SELECT [Name], [year], [month] 
FROM cte CROSS JOIN dbo.viewFranchiseList