请问这两个表之间如何关联取出部门总人数?

A表存部门名字,但是个别部门是存在合并现象的,例如部门 8100,8125,8154是要合并成一个大部门来统计。

B表是系统表,记录了过往每一天每个部门的人员信息明细表。(每天存一条数据)

希望在指定时间段查询时,可以取到各部门的人数合计。

比如用户在选择2021年2月时,选择“东安店”时,查询结果是B表的20210201-20210228日,8100+8125+8154的部门人数。

我这么写的,不加时间关联条件可以查, +了就查不出。。

SELECT * FROM (SELECT DISTINCT CALDAY,COUNT(EMPLOYEE),ZICZG0010 FROM “B表" 

GROUP BY CALDAY,ZICZG0010) B      

RIGHT JOIN “A表” 

ON A.BMZH=B.ZICZG0010 

-----AND A.NY = (LEFT(B.CALDAY,6) (这行注释掉就能查)

 WHERE A.BMZHMS=\'东安店\'

FineReport rbk333 发布于 2021-3-3 20:18
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
1
zsh331Lv8专家互助
发布于2021-3-3 20:22(编辑于 2021-3-3 21:32)

NY值有-,另外字段后六位不带-,知道为什么关联不上了吧!如何解决,稍微动动脑筋就解决了!—— 定位问题,学会解决问题,才会成长!

————————————

SELECT

*

FROM

(

SELECT DISTINCT

CALDAY,

COUNT(EMPLOYEE) as tt,

ZICZG0010

FROM

B表

GROUP BY

CALDAY,

ZICZG0010

) B

RIGHT JOIN  A表 A 

ON A.BMZH = B.ZICZG0010 AND concat(replace(A.NY,"-",""),"01") = B.CALDAY

WHERE

A.BMZHMS = '东安店'

  • rbk333 rbk333(提问者) A.NY=CONCAT(LEFT(B.CALDAY,4),\\\'-\\\',RIGHT(B.CALDAY,2)) 这么写对么?
    2021-03-03 20:33 
  • zsh331 zsh331 回复 rbk333(提问者) 对,但用replace函数处理NY字段更简单!
    2021-03-03 20:36 
  • rbk333 rbk333(提问者) 回复 zsh331 我那个不行, 因为B表每个月30条记录, 等于每天的人数都不一样, 我希望只取每月1日的。。 例如A.NY = \'202003\' 等同于 B.CALDAY =\'20200301\' 。 不会写,
    2021-03-03 20:52 
  • rbk333 rbk333(提问者) 回复 zsh331 ·····
    2021-03-03 21:16 
  • zsh331 zsh331 回复 rbk333(提问者) 其实我很无语!
    2021-03-03 21:32 
  • 1关注人数
  • 241浏览人数
  • 最后回答于:2021-3-3 21:32
    请选择关闭问题的原因
    确定 取消
    返回顶部