我有一张桌子,里面有很多公司。我需要制作一个字典视图,它结合了一些公司数据,此外,还有过去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]
答案 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