2014-11-01 2 views
0

Я пытаюсь получить сумму столбца, если их ISBN тот же, а shipdate - null. Shipdate находится в другой таблице, поэтому кажется, что часть «и shipdate is null» не проверяется должным образом, на самом деле все они считаются не нулевыми, что неверно.Получите сумму с двумя таблицами?

select oh.OrderNo, shipdate, qty, ISBN, 
    need = (select sum(qty) 
    from OrderDetail 
    where od.ISBN = ISBN and shipdate is null) 
from orderheader oh 
join orderdetail od on oh.OrderNo=od.OrderNo 
where shipdate is null 

Я попробовал другой метод

need = (select sum(case when shipdate is null then qty else 0 end) 
from OrderHeader where shipdate is null and od.ISBN = ISBN), 

, но она имеет внешнюю ссылку, поэтому он не будет работать. Любая помощь приветствуется.

Edit: Образец

OrderNo shipdate qty ISBN  need 
7  NULL  1 0030615372 1 
7  NULL  1 0345350499 11 
9  NULL  1 0345350499 11 
10  NULL  4 0345350499 11 
10  NULL  2 0395851580 8 
10  NULL  3 0395851580 8 
7  NULL  1 0439136350 9 
7  NULL  1 0887251714 1 

потребность является неправильным, это в том числе shipdates, которые не являются нуль (которые не показаны), а также. потребность должна быть: 1, по существу сумма Qty для где ISBN такой же

+0

Не могли бы вы отобразить образец данных? Ваш вопрос немного запутан. –

+0

@OP, смогли ли вы решить эту проблему? – AdamMc331

ответ

1

Вместо того, чтобы использовать подзапрос, чтобы получить сумму, просто используйте функцию совокупности SUM(). Это будет работать, если вы присоединитесь к таблицам правильно. Не видя ваш дизайн таблицы и некоторые образцы данных от обоих это трудно проверить, но я что-то вроде этого картина:

SELECT oh.orderno, od.shipdate, od.isbn, SUM(od.qty) AS need 
FROM orderdetail od 
JOIN orderheader oh ON oh.orderno = od.orderno 
WHERE od.shipdate IS NULL 
GROUP BY isbn 

Вам нужно сгруппировать по ISBN, чтобы получить надлежащую сумму для этого ISBN. Это может быть частью проблемы, с которой вы столкнулись.

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