如何将年份列拆分为多列(SAS、SQL实现)
拆分年份列的最简实现方案
假设你的原表名为original_table,包含TAXYR年份列以及ID、Status等关联字段,最通用且简单的实现方式是用SQL的CASE WHEN结合聚合函数,直接基于查询结果创建新表:
CREATE TABLE new_table AS SELECT ID, Status, -- 这里列出所有需要保留到新表的其他业务字段 MAX(CASE WHEN TAXYR = 2024 THEN TAXYR END) AS TAXYR2024, MAX(CASE WHEN TAXYR = 2025 THEN TAXYR END) AS TAXYR2025 FROM original_table GROUP BY ID, Status -- 所有非聚合的字段必须包含在GROUP BY中
关键说明:
CASE WHEN会根据TAXYR的值匹配对应列,未匹配的年份列会显示为NULLMAX聚合函数用于确保每个关联字段组合(比如同一ID+Status)下,对应年份只保留一个有效取值(若同一组合下对应年份有多条记录,可根据需求替换为MIN或其他聚合函数)CREATE TABLE ... AS语法一步完成新表创建与数据填充,无需额外步骤
如果你的数据库支持PIVOT语法(如SQL Server、Oracle),也可以用以下简化写法,但兼容性不如CASE WHEN:
CREATE TABLE new_table AS SELECT * FROM original_table PIVOT ( MAX(TAXYR) FOR TAXYR IN (2024 AS TAXYR2024, 2025 AS TAXYR2025) ) AS pivot_table
内容的提问来源于stack exchange,提问作者Novichok
相关产品推荐
相关产品推荐

