我有一個與許多內部連接表的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 ...)行 –