Я застрял на этом какое-то время и не могу для жизни меня понять, почему SQL не тянет через то, что я хочу. Кажется простым, и я знаю, что это просто, но я не могу получить правильные цифры.Функции SQL Sumif/GROUP BY & SUM?
У меня есть код для извлечения данных из объединенных таблиц в нашей базе данных с указанием номеров клиентов, приобретенных продуктов, даты покупки вместе с ценой продукта и количеством этой товарной линейки. Когда я устанавливаю между датами и GROUP по дате, он отлично работает и просматривает всю необходимую информацию.
Я хочу, чтобы GROUP по продукту, суммируя количество продуктов, приобретенных в диапазоне дат для каждого клиента. Когда я пытаюсь суммировать (SIL.ILQTY) сумму над calcualtes это значение ....... Я попробовал Sum с CASE, который также терпит неудачу. У меня есть код ниже и фильтровать записи, чтобы упростить тестирование, поэтому отображается только один продукт и один клиент с 7 датами покупки для этого продукта.
Следующий код показывает записи по дате, которая работает:
SELECT SIH.SICUST, SIL.ILPROD, date(SIL.ILDATE), SIL.ILNET, SIL.ILQTY,
SIL.ILQTY*SIL.ILNET, SIH.SICUST || ' ' || rtrim(SIL.ILPROD) || ' '
FROM NWBAKERS.BPCSF.IIM IIM,
NWBAKERS.BPCSF.SIH SIH,
NWBAKERS.BPCSF.SIL SIL
WHERE SIH.SIINVN = SIL.ILINVN
AND IIM.IPROD = SIL.ILPROD
AND ((date(SIL.ILDATE) between '02/01/2016' and '02/29/2016'))
and SIL.ILWHS ='PR'
and SIL.ILQTY > '0'
and SIH.SICUST = '40634'
and SIL.ILPROD = '81039'
GROUP BY SIH.SICUST, SIL.ILPROD, date(SIL.ILDATE), SIL.ILQTY, SIL.ILNET
Проблема заключается в том, когда я удалить дату (SIL.ILDATE) из группы по утверждению и суммы (SIL.ILQTY) в операторе отбора чтобы получить уникальный номер клиента, который приобрел общее количество уникальных продуктов (ILQTY) в указанном диапазоне дат.
Может ли кто-нибудь указать мне в правильном направлении, пожалуйста ????
Пример изображения данных для выше:
данных с датой удалены из группы по и суммы (ILQTY) в операторе отбора:
Desired result for one product by customer
Я удалил тег sql-server, потому что синтаксис явно не является SQL Server. –
Переместите большую часть (дата/обрезка/etc) в производную таблицу, выполните группу на основном уровне. – jarlh
показать пример данных, нужный результат и неправильный вывод, который вы получаете. – Charles