#sql
#sql
Вопрос:
Мне нужен запрос, в котором я могу получить результаты из столбца кол-во рук, кол-во выделено и кол-во упорядочено.
Моя проблема в том, что у меня есть этот запрос, и он не показывает мне имеющееся количество, равное 0, и любое значение в двух других столбцах.
select
item_location_view.qty_on_hand AS 'Qty on Hand',
item_location_view.qty_allocated AS 'Qty Allocated',
item_location_view.qty_backordered AS 'Qty Backordered'
FROM
dbo.inv_mast inv_mast,
dbo.item_location_view item_location_view
WHERE
inv_mast.item_id = item_location_view.item_id AND
((item_location_view.qty_on_hand>=0) AND
(item_location_view.qty_allocated>0) AND
(item_location_view.qty_backordered>0))
Спасибо вам всем
Комментарии:
1. Во-первых, не используйте старую нотацию join. Продвигая использование explict
JOIN
sintaxis, Аарон Бертран написал об этом замечательную статью «Вредные привычки, от которых нужно избавиться: использование объединений в старом стиле» .2. вы должны получать результаты до тех пор, пока выполняются 2 других ваших критерия, поскольку все ваши условия связаны с
AND
s. Есть ли у вас хотя бы одна строка с OnHand = 0, Alloc> 0 и backordered> 0? Если нет, вы не увидите никаких результатов. Попробуйте прокомментировать свои условия распределения и обратного упорядочения и посмотрите, получите ли вы ожидаемые результаты.
Ответ №1:
Похоже, вам нужны изменения AND
для OR
select
ilv.qty_on_hand AS 'Qty on Hand',
ilv.qty_allocated AS 'Qty Allocated',
ilv.qty_backordered AS 'Qty Backordered'
FROM dbo.inv_mast inv
JOIN dbo.item_location_view ilv
ON inv.item_id = ilv.item_id
WHERE (
(item_location_view.qty_on_hand>=0)
OR (item_location_view.qty_allocated>0)
OR (item_location_view.qty_backordered>0)
)
возможно, 2-й вариант
WHERE item_location_view.qty_on_hand >= 0
AND (
item_location_view.qty_allocated > 0
OR item_location_view.qty_backordered > 0
)