我的查询返回了错误的结果。请看下面的内容。我为所有员工获得相同的工资总额。SQL查询返回错误结果
我想要的结果如下表所示:
S.no Employee_name Emoloyee_id Gross Salary
-----------------------------------------------
1 Abc 001 1234567
2 Xyz 002 2345667
3 Dfg 003 456784
下面是上面查询示例表。这包括以下视图和表:
的(a)V_HR_PP_PROCESS_DATA
其包括用于工资总额的Amount
柱
EMPLOYER_CODE TAX_YEAR EMPLOYEE_ID PROCESS_MONTH PD_CODE
-----------------------------------------------------------
RAD 2014 1 1 D001
RAD 2014 1 1 Z001
RAD 2014 3 2 Z500
(b)中I_HR_SYS_DATE_MONTHLY
:
EMPLOYER_CODE TAX_YEAR MONTH
------------------------------
RAD 2014 1
RAD 2014 2
(c)中I_HR_EMPLOYEE_MASTER
:
EMPLOYER_CODE EMPLOYEE_ID EMPLOYEE_NAME
-----------------------------------------------
RAD 1 GODWIN KOMBA
RAD 2 JANE SHIBANDA
RAD 3 ANDREW JOACHIM KIIZA
RAD 4 AHMED IBRAHIM DAHAL
RAD 5 ADAM KAWA
The EMPLOYER_CODE = 'RAD'
在所有这三个表格中都很常见。
请看看查询过,这是不给结果的要求:
SELECT
b.EMPLOYEE_NAME AS employeename,
(SELECT SUM(AMOUNT)
FROM V_HR_PP_PROCESS_DATA
WHERE EMPLOYER_CODE = A.EMPLOYER_CODE
AND EMPLOYEE_ID IN (SELECT EMPLOYEE_ID
FROM I_HR_EMP_EMPLOYMENT_DTL
WHERE EMPLOYER_CODE = A.EMPLOYER_CODE
AND CONTRACT_TERM = 'F')
AND PROCESS_MONTH BETWEEN 1 AND 10
AND PD_CODE = 'Z500') AS GROSS_CASUAL
FROM
I_HR_SYS_DATE_MONTHLY A
INNER JOIN
I_HR_EMPLOYEE_MASTER b ON b.EMPLOYER_CODE = A.EMPLOYER_CODE
GROUP BY
A.EMPLOYER_CODE, b.EMPLOYEE_NAME
哪个RDBMS是这个呢?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –
sql -server是数据库 – kaurSukh
什么是** S.no **的预期结果?它来自哪里?提出的查询不是上面输出的那个,是吗?如果“V_HR_PP_PROCESS_DATA其中包含Gross Salary的Amount字段”,您为什么不选择SELECT E.Employee_name,E.Employee_id,P.Amount AS GrossSalary FROM V_HR_PP_PROCESS_DATA P JOIN I_HR_EMPLOYEE_MASTER E ON P.Employee_id = E.Employee_id'? – Abecee