sql

如图:依次A表。B表数据如下。想得到最右边如下结果,得到每年每个月的数据。mysql数据库image.png

image.png

SQL 重庆一棵草 发布于 昨天 17:07 (编辑于 昨天 17:16
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于昨天 17:09(编辑于 昨天 18:20

SELECT B.D,B.E,A.A,B.G FROM A表 A  LEFT JOIN B表 B on A.A=B.F

image.png

---------

with t1 as(

SELECT '2024-01' [A] UNION ALL

SELECT '2024-02' [A] UNION ALL

SELECT '2024-03' [A] UNION ALL

SELECT '2024-04' [A] UNION ALL

SELECT '2024-05' [A] UNION ALL

SELECT '2024-06' [A] UNION ALL

SELECT '2024-07' [A] UNION ALL

SELECT '2024-08' [A] UNION ALL

SELECT '2024-09' [A] UNION ALL

SELECT '2024-10' [A] UNION ALL

SELECT '2024-11' [A] UNION ALL

SELECT '2024-12' [A] 

),

T2 AS (

SELECT '张三' [A],'数学' [B],'2024-01' [C],'100' [D] UNION ALL

SELECT '张三' [A],'语文' [B],'2024-01' [C],'99' [D] UNION ALL

SELECT '张三' [A],'数学' [B],'2024-05' [C],'300' [D] UNION ALL

SELECT '张三' [A],'语文' [B],'2024-05' [C],'500' [D]

)

SELECT distinct T3.A,T3.B,T3.C,T2.D FROM

 (

SELECT T2.A,T2.B,T1.A [C] FROM T2 cross JOIN T1 )

T3 LEFT JOIN T2 ON T3.C=T2.C AND T3.B=T2.B 

image.png

  • 重庆一棵草 重庆一棵草(提问者) 我就是这样写的 ,但是实际就是得不出来。我这下面这个表里面 前面主表是日期表,后面这个是数据表,只有3个月有数据。但是最后只得到3条数据
    2025-02-24 17:17 
  • Z4u3z1 Z4u3z1 回复 重庆一棵草(提问者) 你的SQL应该用right join吧
    2025-02-24 17:25 
  • Z4u3z1 Z4u3z1 回复 重庆一棵草(提问者) SQL修改补充在上面了
    2025-02-24 18:11 
最佳回答
0
puppyLv4见习互助
发布于昨天 17:20

两个表用笛卡尔集关联

  • 2关注人数
  • 30浏览人数
  • 最后回答于:昨天 18:20
    请选择关闭问题的原因
    确定 取消
    返回顶部