SQL Server 根据累计Run_time计算逐年Run_time

ohfgkhjo  于 2023-02-15  发布在  其他
关注(0)|答案(1)|浏览(130)

在SQL Server中,我维护了以下详细信息。
| S.No|溶媒_ID|开始日期|失败日期|总运行年数|
| - ------|- ------|- ------|- ------|- ------|
| 1个|1个|2011年1月1日|二〇一三年十二月三十一日|三个|
| 第二章|1个|2014年1月1日|二〇一五年十二月三十一日|第二章|
| 三个|1个|2016年1月1日|2019年12月31日|四个|
| 四个|1个|2020年1月1日|二〇二二年十二月三十一日|三个|
| 五个|第二章|2011年1月1日|二〇一五年十二月三十一日|五个|
| 六个|第二章|2016年1月1日|二〇二二年十二月三十一日|七|
| 八个|三个|2013年1月1日|二〇一六年十二月三十一日|四个|
| 十个|三个|2017年1月1日|二○二一年十二月三十一日|五个|
我想根据累计Run_time计算逐年的Run_time
所需结果如下:
| 年份|运行年份|
| - ------|- ------|
| 二○一一年|第二章|
| 二〇一二年|第二章|
| 二〇一三年|三个|
| 二〇一四年|三个|
| 二〇一五年|三个|
| 二〇一六年|三个|
| 二〇一七年|三个|
| 二〇一八年|三个|
| 二○一九年|三个|
| 小行星2020|三个|
| 小行星2021|三个|
| 小行星2022|第二章|
1.* * 年份列第一年是自开始日期起的最小年份**
1.* * 年份列结束年份是失败日期**的最大年份

wj8zmpe1

wj8zmpe11#

首先,我们可以使用GENERATE_SERIES生成相关年份的列表

SELECT value [Year]
FROM GENERATE_SERIES(
    (SELECT YEAR(MIN(StartDate)) FROM Cars), 
    (SELECT YEAR(MAX(EndDate))   FROM Cars)
)

在此之后,我们可以JOIN YEARS表与我们的数据分组,它按年和获得计数:

WITH YEARS AS (
    SELECT value [Year]
    FROM GENERATE_SERIES(
        (SELECT YEAR(MIN(StartDate)) FROM Cars), 
        (SELECT YEAR(MAX(EndDate))   FROM Cars)
    )
) SELECT [Year], COUNT(*)
FROM YEARS
JOIN Cars ON [Year] BETWEEN YEAR(StartDate) AND YEAR(EndDate)
GROUP BY [Year]

并在以下对象上测试上述查询:https://sqlize.online/sql/mssql2022/9ae8b354190c9cf2d19739bf9b9a9816/

相关问题