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

Oracle SQL按STDNT_GROUP首字母规则实现行转列的方法咨询

需求实现解答

该需求完全可以通过SQL实现,最通用的实现方式是使用条件聚合,兼容MySQL、PostgreSQL、SQLite、SQL Server、Oracle等绝大多数主流SQL数据库。


实现逻辑

  • 按EMPLID字段分组,将同一个员工的所有记录聚合到同一行
  • 通过CASE WHEN判断STDNT_GROUP的前缀,分别匹配到对应的目标列
  • 使用MAX()/MIN()聚合函数提取匹配到的值,无匹配值时自动返回NULL,完全符合预期输出要求

示例SQL代码

假设你的原始表名为student_groups,可直接运行以下语句得到目标结果:

SELECT 
  EMPLID AS Emplid,
  MAX(CASE WHEN STDNT_GROUP LIKE 'H%' THEN STDNT_GROUP END) AS Hos,
  MAX(CASE WHEN STDNT_GROUP LIKE 'T%' THEN STDNT_GROUP END) AS Tut,
  MAX(CASE WHEN STDNT_GROUP LIKE 'M%' THEN STDNT_GROUP END) AS Mess
FROM student_groups
GROUP BY EMPLID
ORDER BY EMPLID;

补充说明

如果你的数据库支持PIVOT专用语法,也可以用对应行转列函数实现,上述条件聚合写法不依赖数据库特定语法,兼容性最强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:36:03