如何在MS Access中用单条SQL按顺序行转列(适配VB.Net)
MS Access 行转置列并按指定顺序排列(含Total列调整)
修正后的SQL语句
TRANSFORM Sum(Tableproduct.[Qty]) AS SumOfQty SELECT Tableproduct.Codeproduct AS CodeProduct, Tableproduct.Colour AS Colour, Sum(Tableproduct.Qty) AS Total FROM Tableproduct INNER JOIN SizeProduct ON Tableproduct.Size = SizeProduct.Size WHERE Tableproduct.Codeproduct = 'A' GROUP BY Tableproduct.Codeproduct, Tableproduct.Colour PIVOT SizeProduct.Size IN ('S', 'M', 'L', 'XL');
关键调整说明
- 强制列顺序:Access的
PIVOT子句默认会按Size值的字母或存储顺序生成列,无法直接关联SizeProduct.Sequence排序。通过IN ('S', 'M', 'L', 'XL')显式指定列的顺序,完美匹配SizeProduct表中Sequence 1-4的大小顺序。 - 调整Total列位置:将
Sum(Tableproduct.Qty) AS Total移至SELECT子句末尾,确保结果集中Total列位于所有Size列之后。 - 兼容VB.NET调用:全程使用标准SQL语法,未依赖Access专属内置函数,可直接通过VB.NET的OleDb等数据访问组件执行。
执行结果
该语句将生成符合预期的输出:
| CodeProduct | Colour | S | M | L | XL | TOTAL |
|---|---|---|---|---|---|---|
| A | Black | 20 | 10 | 30 | ||
| A | White | 15 | 10 | 25 |
内容的提问来源于stack exchange,提问作者user22579796
相关产品推荐
相关产品推荐

