Вот мой запрос, как он стоит, и она работает:SQL фильтра на сумму
SELECT EXPENDITURES.CNTRT,
EXPENDITURES.L_CNTRT,
EXPENDITURES.BE,
EXPENDITURES.L_BE,
EXPENDITURES.SPGM_STD,
EXPENDITURES.L_SPGM,
EXPENDITURES.CAT,
EXPENDITURES.L_CAT,
EXPENDITURES.OCA,
EXPENDITURES.L_OCA,
EXPENDITURES.L2,
EXPENDITURES.L1L5,
EXPENDITURES.L_L1L5,
EXPENDITURES.OBJ,
EXPENDITURES.L_OBJ,
EXPENDITURES.STFY,
EXPENDITURES.CF,
EXPENDITURES.TRNS_AMT,
EXPENDITURES.MGDT,
EXPENDITURES.VENDOR_ID_NO,
EXPENDITURES.VENDOR_LONG_NAME,
EXPENDITURES.DESCRIPTION,
EXPENDITURES.INVOICE_NO,
EXPENDITURES.DN,
EXPENDITURES.OTHER_DOC_NO,
EXPENDITURES.PRIM_DOC_NO,
EXPENDITURES.SECOND_DOC_NO,
EXPENDITURES.TR
FROM IDS.EXPENDITURES EXPENDITURES
WHERE ((EXPENDITURES.BE<>'70212349'))
AND (EXPENDITURES.OCA LIKE '%C')
AND (EXPENDITURES.STFY='2017')
AND (EXPENDITURES.CF<>'C')
AND ((EXPENDITURES.MGDT<={ts '2016-07-31 00:00:00'}) AND (EXPENDITURES.MGDT>={ts '2016-07-01 00:00:00'}))
Что меня попросили сделать, это сделать так, чтобы, если только группа полями до CF, сумма на основе TRNS_AMT и сумму TRNS_AMT <> 0, тогда возвратите все остальные данные по этим транзакциям.
Я не являюсь человеком SQL и должен был сделать все это вручную и был бы признателен за любую помощь в том, что мне нужно сделать. Я пробовал делать HAVING и GROUP BY, но он не позволял мне пропускать все поля после TRNS_AMT из GROUP BY, и все эти поля после GROUP BY вызывают проблему, потому что они не идентичны для любой транзакции, что приводит к без фильтрации на TRNS_AMT.
Так, на английском языке, мне нужно сначала найти, какие сделки, чьи суммы сгруппированных вместе первые 17 полей, не равны нулю, и вернуть все 28 полей на ненулевых результатов с их TRNS_AMT unsummed , пользователю.
Пожалуйста, добавьте тег для RDBMS, который вы используете, включая версию, если это возможно. – DeanOC
@DeanOC Я знаю, что это Oracle, потому что мне нужно было искать драйверы, чтобы подключиться к нему, но это все. Я просто пользователь и спорадический пользователь. – Fixer