如何将SQL查询结果的行值转置为单列id?
单行多列转单列的SQL实现
针对你需要将单行多列结果转置为单列id的需求,以下是几种主流SQL数据库的实现方法:
通用方案(适用于所有SQL方言)
使用UNION ALL将每个列作为单独的行返回,适合列数较少的场景:
SELECT id FROM your_table UNION ALL SELECT lag_1 FROM your_table UNION ALL SELECT lag_2 FROM your_table UNION ALL SELECT lag_3 FROM your_table;
注:如果原表存在多行数据,需添加
WHERE条件指定要转置的目标行,例如WHERE id = 8。
PostgreSQL 专属方案
利用数组和unnest函数简化代码:
SELECT unnest(ARRAY[id, lag_1, lag_2, lag_3]) AS id FROM your_table WHERE id = 8;
SQL Server 专属方案
使用CROSS APPLY结合VALUES子句实现:
SELECT v.id FROM your_table t CROSS APPLY (VALUES (t.id), (t.lag_1), (t.lag_2), (t.lag_3)) v(id) WHERE t.id = 8;
注意事项
如果各列的数据类型不一致,需通过CAST或CONVERT统一类型,避免查询报错。
内容的提问来源于stack exchange,提问作者kms
相关产品推荐
相关产品推荐

