这两个表直接怎么关联?

1614651625488249.png

1614651625733012.png

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

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

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

比如用户在选择2021年3月时,选择“东安店”时,查询结果是B表的20210228(上月月末),8100+8125+8154的部门人数。 不知道怎么写语句啊,请教。

 

SELECT

*

FROM

(

SELECT DISTINCT

CALDAY,COUNT(EMPLOYEE) as RS, ZICZG0010

FROM

B表

GROUP BY,CALDAY,ZICZG0010 ) B

RIGHT JOIN  A表  A 

ON A.BMZH = B.ZICZG0010 

(!这里查1个时间关联语句!)

WHERE A.BMZHMS = '东安店'

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

SELECT

B.CALDAY,A.BMZHMS,SUM(B.RS) as RS 

FROM

(

SELECT DISTINCT

CALDAY,COUNT(EMPLOYEE) as RS, ZICZG0010

FROM

"_SYS_BIC"."CB.BL.YW/ZBL_ZDEYG001"

GROUP BY,CALDAY,ZICZG0010 ) B

RIGHT JOIN  "_SYS_BIC"."ZBMJJB_BM" A 

ON A.BMZH = B.ZICZG0010 

(!这里查1个时间关联语句!)

WHERE A.BMZHMS = '东安店'

group by CALDAY,BMZHMS

  • rbk333 rbk333(提问者) 您写的可以, 但是A表的时间还没有和B表关联。 A表每月每部门只有一条日期数据(2020-01)。但是B表是20200101,20200102,20200103....20200131, 有31条数据,只希望取月初的第一条。
    2021-03-04 11:16 
  • linboding linboding 回复 rbk333(提问者) 日期关联取b表的时间left(CALDAY,6)=left(a.ny,4)拼接right(a.ny,2),这样只关联年月
    2021-03-04 11:22 
最佳回答
0
烟尘Lv6高级互助
发布于2021-3-4 10:18

思路是先把ab两个表按编号join,作为基础表,然后按部门名称group by 求人数

select * from

(select * from a left join b on a.bmhz=b.ziczg0010) c

where BMZHMS = 东安店

最佳回答
0
LarryAbbyLv5中级互助
发布于2021-3-4 10:21

SELECT COUNT(1)

  FROM A, B

 WHERE A.BMZH = B.ZICZG0010

   AND A.BMZHMS = '东至店'

   AND B.CADAY = LAST_DAY(ADD_MONTHS(TO_DATE('2021-03', 'YYYY-MM') - 1))

  • 4关注人数
  • 335浏览人数
  • 最后回答于:2021-3-4 10:26
    请选择关闭问题的原因
    确定 取消
    返回顶部