如何在SQL中为多个类别分配所有查询到的日期?
实现类别与日期全组合的SQL查询方法
你需要将sales表中的每个类别与date_table的所有唯一日期进行全量配对,用**交叉连接(CROSS JOIN)**就能实现,具体SQL语句如下:
SELECT s.category, d.date FROM sales s CROSS JOIN (SELECT DISTINCT date FROM date_table) d ORDER BY s.category, d.date;
语句说明:
CROSS JOIN会自动把sales表的每一条类别记录,和子查询返回的所有日期记录进行组合,生成你需要的全量配对结果。- 子查询
(SELECT DISTINCT date FROM date_table)复用了你原本获取唯一日期的逻辑,确保拿到不重复的日期集合。 ORDER BY用于让结果按类别、日期排序,和你预期的输出格式一致,若不需要排序可直接去掉该子句。
执行这条语句后,就能得到你期望的结果:
category date chocs 2020-02-10 chocs 2019-08-08 chocs 2017-09-06 chocs 2021-11-10 biscuits 2020-02-10 biscuits 2019-08-08 biscuits 2017-09-06 biscuits 2021-11-10
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

