在SQL Server中为年份和季度分配值

时间:2019-06-26 14:02:54

标签: sql-server concatenation assign

我需要为SQL中的年份和季度分配值。我有两个变量:Development_YearDevelopment_QuarterDevelopment Year的值是年,而Development_Quarter的值可以是“ 1,2,3,4”。截至目前,这两个表是单独的字段。最终,我想创建一个精算三角形,其中的列字段如下所示:1998Q1、1998Q2,....,1999Q3等。为此,我需要将它们连接起来,但是我不确定如何。

然后,我想将一个临时值(从1950年开始)分配给年和月。最终目标是从这些新值中选择,每3个进行选择,然后返回代表临时值的原始值,并将其与四分之一数连接起来。

我还没有尝试过任何代码,但是我正在考虑可能使值类似于以下内容(将四分之一值串联在一起):(actual year-starting year) * 12 + Quarter

我确定这非常令人困惑-让我知道我可以澄清的内容。

1 个答案:

答案 0 :(得分:1)

如果我理解,您可以使用递归CTE将其淘汰,以生成所有年份,然后将结果集与可能的四分之一交叉应用,然后进行合并:

DECLARE @quartervals TABLE (Quarterval VARCHAR(2))
INSERT INTO @quartervals
VALUES
('Q1'),
('Q2'),
('Q3'),
('Q4')

;WITH cte AS (
--get 60 years of ints:
SELECT 1950 AS year_
UNION ALL 
SELECT year_ + 1 
FROM cte 
WHERE year_ < 2010
)

SELECT CAST(cte.year_ AS VARCHAR(4)) + qv.quarterval AS year_quarter

FROM cte
CROSS APPLY @quartervals qv