You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在MS Access中使用SQL实现多行数据转列(含多迭代场景)

嘿,这个问题其实很好解决,核心就是调整你的分组维度就够了!

解决思路

你之前的SQL只按PartSN分组,所以不同Iter下的同Test数据会被MAX函数合并成一行。现在要保留每个迭代的结果,只需要把Iter也加入到分组条件里,让数据库按PartSN + Iter的组合来分组,这样每个组合下的转列结果就会独立展示了。

修改后的SQL语句

SELECT 
    Table1.PartSN,
    Table1.Iter,
    MAX(IIF(Table1.Test = 'Test1', Table1.Data, NULL)) AS Test1,
    MAX(IIF(Table1.Test = 'Test2', Table1.Data, NULL)) AS Test2
FROM Table1
GROUP BY Table1.PartSN, Table1.Iter

执行这个语句后,就能得到你想要的结果:

PartSN Iter Test1 Test2
Part1  1    20    23
Part1  2    19    24

补充:用PIVOT语法实现(适用于支持PIVOT的数据库,比如SQL Server)

如果你的数据库支持PIVOT操作,也可以用更简洁的写法:

SELECT PartSN, Iter, Test1, Test2
FROM (
    SELECT PartSN, Test, Data, Iter
    FROM Table1
) AS SourceTable
PIVOT (
    MAX(Data)
    FOR Test IN (Test1, Test2)
) AS PivotTable

这个写法逻辑和之前的IIF方法一致,只是用数据库内置的转列语法来实现,可读性会更好一些。

内容的提问来源于stack exchange,提问作者wildfire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:52:58