У меня есть инструкция sql со многими внутренними таблицами объединения, как вы можете видеть ниже. У меня есть много условных операторов SUM, эти суммы дают мне неправильные (очень большие) числа, поскольку внутреннее соединение повторяет одни и те же значения в моем источнике выберите пул. Мне было интересно узнать, существует ли способ ограничить эти условия суммирования, скажем, EMPLID. Код: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()) к где п. Любая помощь была бы очень полезна
mysql, или mssql? Это не может быть ... –
Возможный дубликат [SQL не делает соединение правильно] (http://stackoverflow.com/questions/30805408/sql-not-doing-the-join-correctly) –
@GiorgiNakeuri it не является возможным дубликатом, если вы посмотрите на другой вопрос, который вы увидите, я уже спросил об этом, и тот ссылается на другую проблему. Здесь я хочу теперь, как мне изменить строки SUM (CASE ...) –