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

如何通过SQL从同表Role列生成Supervisor与Administrator列?

如何用SQL将Role列数据转换为新增列?

现有contacts表包含ClientName、Role、Name三列,数据如下:

ClientName  Role             Name
A123        Supervisor       Dave 1
A123        Administrator    Dave 2
Q012        Supervisor       Jane2
Q012        Administrator    Kent3

需要编写SQL查询,按ClientName聚合,将对应Role的Name值分别放入Supervisor和Administrator列,期望结果如下:

ClientName       Supervisor          Administrator 
A123             Dave 1              Dave 2
Q012             Jane2               Kent3

解决方案

方法1:通用写法(支持所有SQL数据库)

使用CASE表达式结合聚合函数(MAX/MIN)实现行转列,因为每个ClientName对应每个Role仅存在一条数据,聚合函数可以精准提取对应值:

SELECT
  ClientName,
  MAX(CASE WHEN Role = 'Supervisor' THEN Name END) AS Supervisor,
  MAX(CASE WHEN Role = 'Administrator' THEN Name END) AS Administrator
FROM contacts
GROUP BY ClientName;

方法2:使用PIVOT语法(适用于SQL Server、Oracle等支持的数据库)

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

SELECT
  ClientName,
  Supervisor,
  Administrator
FROM contacts
PIVOT (
  MAX(Name)
  FOR Role IN (Supervisor, Administrator)
) AS PivotTable;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:37:41