概述
在某些情况下,我们需要在 SQL 查询中生成连续的年份和年序号。 例如:展示历史数据时,或创建带有时间序列信息的图表时。本文将提供几种 来使用 SQL 生成连续的年份和年序号。
使用 数字序列函数
最直接的 是使用数字序列函数,例如: ROW_NUMBER() 或 RANK() 。以下查询使用 ROW_NUMBER() 函数生成从 2000 年到 2022 年的连续年份:
sql
WITH YearNumbers AS (
SELECT YEAR as Year, ROW_NUMBER() OVER (ORDER BY YEAR) AS YearNumber
FROM (
SELECT DISTINCT YEAR
FROM TableName
)
)
SELECT * FROM YearNumbers;
使用 临时表
也可以使用临时表来生成连续的年份。首先,创建一个包含所需年份范围的临时表:
sql
CREATE TEMP TABLE Years AS (
SELECT YEAR as Year
FROM (
SELECT 2000 UNION ALL
SELECT 2001 UNION ALL
SELECT 2002 UNION ALL
...
SELECT 2022
)
);
然后使用 JOIN 操作将临时表与主表连接以获取年序号:
sql
SELECT t.Year,
(SELECT COUNT(*) FROM Years y WHERE y.Year <= t.Year) AS YearNumber
FROM TableName t
JOIN Years y ON t.Year = y.Year;
使用 CTE
可以使用公共表表达式 (CTE) 来生成连续的年份。以下查询使用 CTE 来创建名为 YearNumbers 的临时结果集,其中包含连续的年份和年序号:
sql
WITH YearNumbers AS (
SELECT 2000 AS Year, 1 AS YearNumber
UNION ALL
SELECT Year + 1, YearNumber + 1
FROM YearNumbers
WHERE Year < 2022
)
SELECT * FROM YearNumbers;
上述 提供了在 SQL 中生成连续年份和年序号的不同选择。根据具体需求,可以选择最合适的 。通过这些技术,可以轻松地获取时间序列数据并创建有价值的图表和分析。