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

Sql server 在SQL Server中为年和季度分配值,sql-server,concatenation,assign,Sql Server,Concatenation,Assign,我需要在SQL中为年份和季度赋值。我有两个变量:发展年和发展季度。开发年的值为年,开发季的值可以为1,2,3,4。到目前为止,这两个字段在表中是分开的。最后,我想创建一个精算三角形,其中列字段如下所示:1998Q1、1998Q2、…、1999Q3等等。为此,我需要将它们连接起来,但我不确定如何连接 然后,我想给一年和一个月分配一个临时值,从一年开始,比如1950年,到现在。最终目标是在这些新值之外,选择每隔3个,然后返回临时值所代表的原始值,并与四分之一数字连接 我没有尝试过任何代码,但我正在考

我需要在SQL中为年份和季度赋值。我有两个变量:发展年和发展季度。开发年的值为年,开发季的值可以为1,2,3,4。到目前为止,这两个字段在表中是分开的。最后,我想创建一个精算三角形,其中列字段如下所示:1998Q1、1998Q2、…、1999Q3等等。为此,我需要将它们连接起来,但我不确定如何连接

然后,我想给一年和一个月分配一个临时值,从一年开始,比如1950年,到现在。最终目标是在这些新值之外,选择每隔3个,然后返回临时值所代表的原始值,并与四分之一数字连接

我没有尝试过任何代码,但我正在考虑可能使值与此类似,将季度值连接在?:实际年份开始年份*12+季度


我相信这是非常混乱的-让我知道我可以澄清什么

如果我理解,您可以使用递归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

大家好,欢迎来到SO。这个问题没有什么意义。只是没有足够的信息来澄清这一点。请参阅,了解如何提出问题,然后了解您应该提供的详细信息。是否有方法对我表中已有的变量执行此操作?年的发展与发展_quarter@d_and_a_kate没有表格和数据,很难知道你在寻找什么。更新您的帖子,使其包含数据表,并显示准确的预期输出。老实说,我认为您的代码可能是最好的选择!我想我也不知道我在寻找什么lol。你的代码确实产生了我最终想要的结果——所以我同意!谢谢