在Dynamics GP Payroll Module中将自定义表与表连接在一起的问题

时间:2019-05-19 16:40:09

标签: sql join dynamics-gp

我正在使用Dynamics GP中的薪资模块。 我创建了一个自定义表,该表从UPR10302(事务活动)获取数据并将其存储,将其称为HistoryTable 一旦计算出支票,我还将UPR30300(交易历史记录)中的CHEKNMBR,PYANMBR,CHEKDATE和EMPLOYID放入该表中。

我需要获取每个批次的薪水总额。 由于UPR30300没有BACHNMBR列,因此我想加入HistoryTable以获得所需的结果。但是由于某种原因,我无法正确地加入他们并不断获得重复。 加入这些表时,我需要消除重复项。

HistoryTable包含整个UPR10302的列+ UPR30300的4列+ 2个给出行号和时间行号的列已创建。 SHFTPREM在此表中有一个值,其中UPR30300中的SHFTPREM仅为'0' 所以它们没有关系。

我尝试进行联接,并尝试进行子查询以摆脱不相关的列,仅包含我需要的列,但结果与常规的INNER JOIN相同

SELECT A.BACHNUM, SUM(B.UPRTRXAM) AS GROSS_AMOUNT, COUNT(A.BACHNUMB), COUNT(DISTINCT A.EMPLOYID) AS EMPLOYEE_COUNT
FROM Company1..HistoryTable A INNER JOIN Company1..UPR30300 B
ON A.EMPLOYID = B.EMPLOYID AND A.CHEKNMBR = B.CHEKNMBR AND A.PYADNMBR = B.PYADNMBR AND A.CHEKDATE = B.CHEKDATE AND A.TRXBEGDT = B.TRXBEGDT AND A.UPRTRXCD = B.PAYROLCD AND A.TRXHRUNT = B.UNTSTOPY AND A.HRLYPYRT = B.PAYRATE 
WHERE A.CHEKNMBR <> '' AND A.USERID <> '' AND B.PYRLRTYP = '1'
GROUP BY A.BACHNUMB;

在300多个行中,只有4个是不正确的(我知道,由于数量大于系统中输入的数量,因此它仍在测试中,因此我们知道输入和输出编号)我已经检查了这4个批次,扫描各个时间表并检查编号,这是发生了什么事

HistoryTable                  UPR30300
SHFTPREM        COMPTRNM      CMRECNUM     TRXNUMB
1               1             1            1
1               1             2            2
2               2             3            3 
3               3             1            1
3               3             2            2

在表HistoryTable中,我有3个校验号和3个时间表,在UPR30300中,我有3个校验号, 但是当我加入他们时,我有5行。其余各列匹配。

0 个答案:

没有答案