在 SQL 服务器中为年份和季度赋值
Assigning values to years and quarters in SQL Server
我需要为 SQL 中的年份和季度赋值。我有两个变量:Development_Year
和 Development_Quarter
。 Development Year
值是年份,Development_Quarter
可以是值“1,2,3,4”。截至目前,这两个是 table 中的独立字段。最后,我想创建一个精算三角形,其中的列字段如下所示:1998Q1、1998Q2、....、1999Q3 等。为此,我需要连接它们,但我不确定如何连接。
然后,我想为年份和月份分配一个临时值,从年份开始,比如 1950,到当前。最终目标是在这些新值之外,select 每 3 个,然后 return 临时值所代表的原始值,与四分之一数字连接。
我没有尝试过任何代码,但我正在考虑是否可以使这些值与此类似(连接四分之一值?):(actual year-starting year) * 12 + Quarter
。
我确定这很令人困惑 - 让我知道我可以澄清什么。
如果我理解,您可以使用递归 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
我需要为 SQL 中的年份和季度赋值。我有两个变量:Development_Year
和 Development_Quarter
。 Development Year
值是年份,Development_Quarter
可以是值“1,2,3,4”。截至目前,这两个是 table 中的独立字段。最后,我想创建一个精算三角形,其中的列字段如下所示:1998Q1、1998Q2、....、1999Q3 等。为此,我需要连接它们,但我不确定如何连接。
然后,我想为年份和月份分配一个临时值,从年份开始,比如 1950,到当前。最终目标是在这些新值之外,select 每 3 个,然后 return 临时值所代表的原始值,与四分之一数字连接。
我没有尝试过任何代码,但我正在考虑是否可以使这些值与此类似(连接四分之一值?):(actual year-starting year) * 12 + Quarter
。
我确定这很令人困惑 - 让我知道我可以澄清什么。
如果我理解,您可以使用递归 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