能否使用单条SELECT SQL语句将第一张表转置为目标第二张表
你的行转列实现思路是正确的,仅需修正两处语法错误即可实现预期的转置效果:
- 第7行
axle_dist_5字段后多了多余的逗号,SELECT语句的最后一个查询字段后不允许加逗号 - GROUP子句缺失关键字
BY,正确写法为GROUP BY
此外,desc属于SQL保留关键字,作为字段名使用时建议用反引号包裹,避免触发语法报错。
修正后的正确SQL语句如下:
SELECT table1.licence_no, table1.plateno, table1.`desc`, MAX(CASE WHEN axle_no = 1 THEN axle_dist ELSE NULL END) AS axle_dist_1, MAX(CASE WHEN axle_no = 2 THEN axle_dist ELSE NULL END) AS axle_dist_2, MAX(CASE WHEN axle_no = 3 THEN axle_dist ELSE NULL END) AS axle_dist_3, MAX(CASE WHEN axle_no = 4 THEN axle_dist ELSE NULL END) AS axle_dist_4, MAX(CASE WHEN axle_no = 5 THEN axle_dist ELSE NULL END) AS axle_dist_5 FROM table1 GROUP BY table1.licence_no, table1.plateno, table1.`desc`;
如果业务场景中轴数不固定(比如可能出现超过5轴的情况),需要用动态SQL拼接才能实现通用转置,这种场景下无法通过单条静态SELECT语句完成需求。

内容的提问来源于stack exchange,提问作者sievy
相关产品推荐
相关产品推荐

