2014-11-04 2 views
1

У меня есть база данных SQL с тремя соответствующими таблицами, клиентами, заказами и элементами. Клиенты имеют идентификатор, который соответствует одному в заказе. заказы имеют номер заказа, который соответствует одному в пунктах. Элементы - это таблица, в которую входит количество клиентов, потраченных на определенную компанию. В этом случае я хочу суммировать сумму, потраченную на компанию под названием «HRO», ВКЛЮЧАЯ тех клиентов, которые не тратили ни одного на HRO (с нулем рядом с их именем). Я правильно работаю, кроме нулевой части. Заранее спасибо!

select customer.customer_num, customer.fname, sum(items.total_price) amountSpent 
from customer 
    left join orders 
     on customer.customer_num = orders.customer_num 
    left join items 
     on orders.order_num = items.order_num 
where items.manu_code like 'HRO' 
group by customer.customer_num, customer.fname 

ответ

3

Ваш пункт, где items.manu_code like 'HRO' является исключением клиентов, которые не имеют каких-либо заказов, поскольку ряды этих клиентов будет null для items.manu_code.

Вместо того, где положение, попробуйте переместить этот фильтр в объединение:

select 
    customer.customer_num, customer.fname, 
    isnull(sum(items.total_price),0) amountSpent 
from customer 
    left join orders 
     on customer.customer_num = orders.customer_num 
    left join items 
     on orders.order_num = items.order_num 
     and items.manu_code like 'HRO' 
group by customer.customer_num, customer.fname 

Я завернул sum в isnull, так что клиенты, не имеющие заказовов отображаются как ноль отработавшего вместо null отработавших.

+0

aah thank you @Blorgbeard – user3192682

+0

Я согласен через несколько минут, когда это возможно. Еще один вопрос о последующих действиях, так как теперь записи NULL для клиентов, которые ничего не потратили на HRO, как я могу заставить их отображаться как $ 0 в столбце суммы вместо этого? – user3192682

+0

хм это на самом деле не работает @Blorgbeard Это дает мне ошибку, любые идеи почему? Я пробовал оба обертывания суммы в isnull и обертывания isnull в сумме – user3192682

Смежные вопросы