sql-server - 在 SQL Server 中为年份和季度赋值
问题描述
我需要在 SQL 中为年份和季度赋值。我有两个变量:Development_Year
和Development_Quarter
. Development Year
值是年份,并且Development_Quarter
可以是值“1,2,3,4”。截至目前,这两个是表中的单独字段。最后,我想创建一个精算三角形,其中列字段如下所示:1998Q1、1998Q2、....、1999Q3 等。为此,我需要将它们连接起来,但我不确定如何连接。
然后,我想为从一年(例如 1950 年)到当前的年和月分配一个临时值。最终目标是从这些新值中选择每 3 个,然后返回临时值所代表的原始值,并与季度数连接。
我没有尝试过任何代码,但我正在考虑可能使这些值类似于此(连接四分之一值?)(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
推荐阅读
- java - 使用 Spring WebSockets 更新 MySQL 数据库
- node.js - express js和mongodb根据name合并两个文档
- ajax - 如何将 ajax 请求失败链接到 jqXHR 状态和错误类型?
- c++ - 设置结构的值然后读取它(访问冲突异常)
- hyperledger-fabric - 如何在 Hyperledger Fabric 上向管理员添加属性值?
- php - Laravel 身份验证不起作用,但所有路由都已正确创建
- python - 即使目录包含在 PATH 中,也无法在不更改目录的情况下从终端运行 Python 脚本
- r - 创建频率数据框并从旧数据框传输列
- c - C 编译器忽略寄存器声明的原因
- python - 为什么我的 PyInstaller .exe 文件被标记为病毒