Распространенный запрос к базе данных SQL возвращает результаты за пределами необходимого мне диапазона - PullRequest
0 голосов
/ 09 июля 2019

Использование Sage 50 и клиентского интерфейса Pervasive ODBC для извлечения данных только для чтения из нашей БД.

У меня есть запрос, используемый для поиска новых клиентов на основе даты их первого выставления счета.Он должен вернуть название категории одного купленного товара, их минимальную дату транзакции (дата первого счета-фактуры - Sage не генерирует это) и общую сумму $ их первого счета-фактуры.

Проблема заключается в том, когда новыйклиент купил несколько раз в выбранном диапазоне дат, запрос получит наибольшую сумму счета, даже если он выходит за пределы диапазона, который я хочу просмотреть.Я смотрю с Q1 по Q2 1/1 - 6/30.

Я попытался изменить предложение WHERE, чтобы ограничить счета, на которые он может смотреть, но он все равно будет получать даты, превышающие диапазон.Я предполагаю, что у меня проблема FWGHSO.

WHERE journalex = 8 AND h.transactiondate BETWEEN '2019-01-01' AND '2019-06-30'

Конечной целью является получение новых клиентов в диапазоне дат, основанном на дате их первого счета, категории товаров в первом счете и общей сумме счета $с их первого счета.

SELECT c.customerid, MAX(l.category) AS "Lead Source", MIN(h.transactiondate) AS "First Inv Date", MAX(r.amount) AS "Invoice Total"
FROM jrnlhdr "h" LEFT OUTER JOIN
 JrnlRow "r" ON h.postorder = r.postorder LEFT OUTER JOIN LineItem "l" ON r.itemrecordnumber = l.itemrecordnumber 
    INNER JOIN customers "c" ON r.customerrecordnumber = c.customerrecordnumber
WHERE journalex = 8 
GROUP BY c.customerid 
HAVING MIN(h.transactiondate) BETWEEN '2019-01-01' AND '2019-06-30';
...