栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在SQL中的表中按组填写缺少的日期

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在SQL中的表中按组填写缺少的日期

您可以像这样不循环

SELECt p.date, COALESCE(a.value, 0) value, p.grp_no  FROM(  SELECt grp_no, date    FROM  (    SELECt grp_no, MIN(date) min_date, MAX(date) max_date      FROM tableA     GROUP BY grp_no  ) q CROSS JOIN tableb b    WHERe b.date BETWEEN q.min_date AND q.max_date) p LEFT JOIN TableA a    ON p.grp_no = a.grp_no    AND p.date = a.date

最里面的子查询每组分别获取最小和最大日期。 然后与进行交叉连接,以

TableB
在每个组的最小-
最大范围内生成所有可能的日期。最后,外部选择将外部联接与一起使用,
TableA
并用填充
value
列以
0
用于缺少的日期
TableA

输出:

| DATE | VALUE | GRP_NO || ------------ | ------- | -------- || 2012-08-06 | 1 | 1 || 2012-08-07 | 0 | 1 || 2012-08-08 | 1 | 1 || 2012-08-09 | 0 | 1 || 2012-08-07 | 2 | 2 || 2012-08-08 | 1 | 2 || 2012-08-09 | 0 | 2 || 2012-08-10 | 0 | 2 || 2012-08-11 | 0 | 2 || 2012-08-12 | 3 | 2 |

这是 SQLFiddle 演示



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456310.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号