尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

AI教我一条SQL实现明细转树形结构

AI教我一条SQL实现明细转树形结构
📅 发布时间:2026/6/18 17:30:20

AI教我一条SQL实现明细转树形结构

1. 原始数据

序号 COUNTRY PROVINCE CITY GAME
1 中国 广东 深圳 地心侠士
2 中国 广东 广州 地心侠士
3 中国 江苏 南京 地心侠士
4 美国 加州 洛杉矶 地心侠士

2. 目标数据

序号 节点名称 节点ID 父级节点ID 国家 省 城市 微信小游戏
1 美国 美国 0 美国
2 加州 美国加州 美国 美国 加州
3 洛杉矶 美国加州洛杉矶 美国加州 美国 加州 洛杉矶 地心侠士
4 中国 中国 0 中国
5 广东 中国广东 中国 中国 广东
6 广州 中国广东广州 中国广东 中国 广东 广州 地心侠士
7 深圳 中国广东深圳 中国广东 中国 广东 深圳 地心侠士
8 江苏 中国江苏 中国 中国 江苏
9 南京 中国江苏南京 中国江苏 中国 江苏 南京 地心侠士

3. 实现思路

从一个明细数据,提取多余的父级信息,可以使用不同维度的分组进行提取.可以逐层获取,也可以使用GROUPING SETS
减少分组代码量.比如以上提供的目标数据中可以如下汇总实现:

  • 汇总国家层级,按照country分组汇总,得到中国,美国,两条数据
  • 汇总省份层级,按照country,province,得到中国广东,中国江苏,美国加州三条数据
  • 汇总明细数据,直接按照所有列进行分组,得到明细数据

以上步骤,可以解决数据问题,但是数据之间的层级关系体现不出来,需要添加三列,分别表示节点名称,节点ID,父级节点ID
可以说使用分组函数GROUPING_ID实现,分组列为二进制,包含分组为0不包含为1,国家,省,明细三个分组值依次为

  • 汇总国家层级 GROUPING_ID(country, province, city),二进制 011 十进制 3,节点名称 country 节点ID country 父级节点ID '0'
  • 汇总省份层级 GROUPING_ID(country, province, city),二进制 001 十进制 1,节点名称 province 节点ID country||province 父级节点ID country
  • 汇总明细层级 GROUPING_ID(country, province, city),二进制 000 十进制 0,节点名称 city 节点ID country||province||city 父级节点ID country||province

分组函数详细参考可以查看 sql分组 group by rollup,cube,grouping sets,group_id,groupingId

WITH region_data AS (SELECT '中国' as country, '广东' as province, '深圳' as city ,'地心侠士' as game FROM dual UNION ALL SELECT '中国', '广东', '广州' ,'地心侠士' FROM dual UNION ALLSELECT '中国', '江苏', '南京','地心侠士' FROM dual UNION ALLSELECT '美国', '加州', '洛杉矶','地心侠士' FROM dual
)
SELECT CASE WHEN GROUPING_ID(country, province, city) = 0 THEN cityWHEN GROUPING_ID(country, province, city) = 1 THEN provinceWHEN GROUPING_ID(country, province, city) = 3 THEN countryEND AS 节点名称,CASE WHEN GROUPING_ID(country, province, city) = 0 THEN country||province||cityWHEN GROUPING_ID(country, province, city) = 1 THEN country||provinceWHEN GROUPING_ID(country, province, city) = 3 THEN countryEND AS 节点ID,CASE WHEN GROUPING_ID(country, province, city) = 0 THEN country||provinceWHEN GROUPING_ID(country, province, city) = 1 THEN countryWHEN GROUPING_ID(country, province, city) = 3 THEN '0'END AS 父级节点ID,country AS 国家,province AS 省,city AS 城市,game as 微信小游戏
FROM region_data
GROUP BY GROUPING SETS ((country, province, city,game),(country, province),     (country)               
)
ORDER BY country, province nulls first, city nulls first;

前端构造树形结构数据,传递给前端有时有特殊字符,方便处理,可以统一转换成16进制串,针对节点ID,父级节点ID,

  function NODEID_TO_RAWID(str in varchar2) return varchar2 isnew_str varchar2(1000);-- 微信公众: 小满小慢 20251113beginnew_str:=UTL_RAW.CAST_TO_RAW(str);return new_str;end;

4. 总结

实现过程使用AI辅助生成测试代码,通过一次交互提示词,返回目标代码.关注微信公众号[小满小慢],回复关键词AIGROUP可获取具体提示内容.

原文地址: https://mp.weixin.qq.com/s/9_A6cgohb8sX1N0RME0usQ

转载请注明来源
作者:杨瀚博
QQ:464884492

相关新闻

  • dayday!!
  • 2025年山东外贸网站开发服务商权威推荐:本地网站建设/出海网站建设/科技网站建设服务商精选
  • 2025年防盗盖封口机厂商权威推荐:铝盖旋盖机/压盖机/锁盖机源头厂家精选

最新新闻

  • 应用层核心(一):从FTP到DNS的进阶指南
  • 毕节黄金回收指南:六家靠谱店铺推荐,让闲置安心变现 - 清奢黄金上门回收
  • AI炒股不是预测股价,而是校准认知:信息保真度实战指南
  • 2026鹰潭余江区黄金回收靠谱门店全盘点!30年老品牌全城覆盖,免费上门无隐形扣费 - 衡金阁
  • Geatpy进化算法工具箱:Python高性能优化计算的终极解决方案
  • Sirius内存管理技术:cuCascade分层内存与磁盘溢出机制

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号