我有一个与许多内部连接表的SQL语句,你可以看到下面我有很多条件SUM语句,这些总和给我错误(非常大)的数字,因为内部连接重复相同的值在我的源选择池中。我想知道ID有一种方法可以限制这些总和条件让我们对EMPLIDs说。代码是:SQL条件总和
SELECT
A.EMPL_CTG,
B.DESCR AS PrName,
SUM(A.CURRENT_COMPRATE) AS SALARY_COST_BUDGET,
SUM(A.BUDGET_AMT) AS BUDGET_AMT,
SUM(A.BUDGET_AMT)*100/SUM(A.CURRENT_COMPRATE) AS MERIT_GOAL,
SUM(C.FACTOR_XSALARY) AS X_Programp,
SUM(A.FACTOR_XSALARY) AS X_Program,
COUNT(A.EMPLID) AS EMPL_CNT,
COUNT(D.EMPLID),
SUM(CASE WHEN A.PROMOTION_SECTION = 'Y' THEN 1 ELSE 0 END) AS PRMCNT,
SUM(CASE WHEN A.EXCEPT_IND = 'Y' THEN 1 ELSE 0 END) AS EXPCNT,
(SUM(CASE WHEN A.PROMOTION_SECTION = 'Y' THEN 1 ELSE 0 END)+SUM(CASE WHEN A.EXCEPT_IND = 'Y' THEN 1 ELSE 0 END))*100/(COUNT(A.EMPLID)) AS PEpercent
FROM
EMP_DTL A INNER JOIN EMPL_CTG_L1 B ON A.EMPL_CTG = B.EMPL_CTG
INNER JOIN
ECM_PRYR_VW C ON A.EMPLID=C.EMPLID
INNER JOIN ECM_INELIG D on D.EMPL_CTG=A.EMPL_CTG and D.YEAR=YEAR(getdate())
WHERE
A.YEAR=YEAR(getdate())
AND B.EFF_STATUS='A'
GROUP BY
A.EMPL_CTG,
B.DESCR
ORDER BY B.DESCR
我已经尝试将D.YEAR = YEAR(getdate())移动到where子句。任何帮助将大大增加
mysql或mssql?它不能是两个... –
可能重复[SQL不正确地执行连接](http://stackoverflow.com/questions/30805408/sql-not-doing-the-join-correctly) –
@GiorgiNakeuri它是不是可能的重复,如果你看看另一个问题,你会看到我已经问过那个,而那个问题是指另一个问题。在这里,我想现在我怎么能修改SUM(CASE ...)行 –