Я работал над этой проблемой, изучая, что я могу делать неправильно, но я не могу найти ответ или ошибку в коде, который я написал. В настоящее время я извлекаю данные из базы данных MS SQL Server с предложением WHERE, которое успешно фильтрует результаты в соответствии с тем, что я хочу. Я получаю примерно 4 строки на сотрудника и хочу добавить столбец значений. В тот момент, когда я добавляю предложение GROUP BY к идентификатору сотрудника и добавляю SUM к значению, я получаю число, которое совершенно неверно. Я подозреваю, что код SQL игнорирует мое предложение WHERE.
Ниже приведен небольшой выбор данных:
hr_empl_code hr_doll_paid
1 20.5
1 51.25
1 102.49
1 560
Я ожидаю, что предложения GROUP BY и SUM дадут мне значение 734.24. Мне дано значение 211461.12. Благодаря устранению неполадок я добавил в свой запрос столбец COUNT (*), чтобы определить количество строк, с которыми он работает, и он дает результат 1152, что еще больше укрепляет мою уверенность в том, что он игнорирует мое предложение WHERE.
Мой код SQL такой, как показано ниже. Большинство из них было сгенерировано интерфейсным приложением, из которого я его запускаю, так что там есть некоторый дополнительный код, который, как мне кажется, помогает при выполнении запроса.
SELECT DISTINCT
T000.hr_empl_code,
SUM(T175.hr_doll_paid)
FROM
hrtempnm T000,
qmvempms T001,
hrtmspay T166,
hrtpaytp T175,
hrtptype T177
WHERE 1 = 1
AND T000.hr_empl_code = T001.hr_empl_code
AND T001.hr_empl_code = T166.hr_empl_code
AND T001.hr_empl_code = T175.hr_empl_code
AND T001.hr_ploy_ment = T166.hr_ploy_ment
AND T001.hr_ploy_ment = T175.hr_ploy_ment
AND T175.hr_paym_code = T177.hr_paym_code
AND T166.hr_pyrl_code = 'f' AND T166.hr_paid_dati = 20180404
AND (T175.hr_paym_type = 'd' OR T175.hr_paym_type = 't')
GROUP BY T000.hr_empl_code
ORDER BY hr_empl_code
Я действительно потерян, где это может пойти не так. Я удалил дополнительное WHERE и уменьшил его до T166.hr_empl_code = T175.hr_empl_code, но это не изменило.
Я ни в коем случае не являюсь экспертом в области SQL Server и запросов, но я достаточно хорошо разбираюсь в этой технологии. Любая помощь будет принята с благодарностью!