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

如何仅用SELECT语句实现列分组并转换为目标表结构?

单表结构转换的SQL实现

原始数据集

InTrafficAOutTraffic AInTrafficBOutTrafficB
10000125001500020000

目标表结构

ClassInTrafficOutTraffic
A1000012500
B1500020000

限制条件

  • 仅允许使用SELECT语句,不可创建视图或使用其他命令

当前错误查询语句

SELECT * FROM 
(SELECT InTrafficA, OutTrafficA FROM SAME_TABLE) AS A
CROSS JOIN
(SELECT InTrafficB, OutTrafficB FROM SAME_TABLE) AS B

正确解决方案

使用UNION ALL合并两组数据即可实现目标结构,无需交叉连接:

SELECT 'A' AS Class, InTrafficA AS InTraffic, `OutTraffic A` AS OutTraffic
FROM SAME_TABLE
UNION ALL
SELECT 'B' AS Class, InTrafficB AS InTraffic, OutTrafficB AS OutTraffic
FROM SAME_TABLE

关键说明

  • UNION ALL会将两个查询的结果按顺序合并,生成目标结构的两行数据,避免交叉连接产生的冗余结果
  • 列名OutTraffic A包含空格,需根据数据库类型用反引号(MySQL)或方括号(SQL Server)包裹,确保语法正确
  • 通过硬编码'A'和'B'指定Class字段值,同时重命名原始列名匹配目标结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:17:43