Счет в Query 400 не проходит правильно

У меня есть таблица, в которой есть данные заказа, например: Таблица Order_Detail и Item_Master объединяются с помощью Item# Мы хотим сообщить номер заказа, таблица Order_Detail:

Order#     Item#              

1234       IPhone6 
1234       IPhone5
1234       Battery

join Item_Master:

Item#            Item_type    Desc

IPhone6          Phone        Smartphone
IPhone5          Phone        Smartphone

Теперь нам нужны только номера заказов, у которых есть только один Item-Type = Phone. Нас интересуют только типы телефонов. Я попытался использовать Query/400 и выполнить подсчет по порядку #, который = Телефон, а затем взять только количество = 1. Но это приводит к некоторым заказам, которые имеют более одного типа телефона = Телефон, в нашем примере здесь мы не будем хочу этот заказ.

3 ответа

Решение

Этот запрос будет возвращать номера заказов, где единственным типом заказанного элемента является "телефон"

select ordernum
from order_detail od
join item_master im on im.itemnum = od.itemnum
group by ordernum
having count(case when im.item_type <> 'Phone' then 1 end) = 0
and count(*) = 1

если вы хотите разрешить несколько "телефонных" заказов, вы можете удалить and count(*) = 1

Ваш вопрос немного сбивает с толку. Вы хотите получить количество номеров заказов, где Item_Type = 'Phone'? Если так, то следующее должно работать для вас:

SELECT COUNT(DISTINCT OrderNum) AS OrderNumCount
FROM Order_Detail o
INNER JOIN Item_Master i ON o.ItemNum = o.ItemNum
WHERE Item_type = 'Phone'

Или вы только после заказов, которые имеют только одну запись из таблицы элементов, связанных. Если так, то вы можете захотеть:

SELECT o.OrderNum
FROM Order_Detail o
INNER JOIN Item_Master i ON o.ItemNum = o.ItemNum
WHERE Item_type = 'Phone'
GROUP BY o.OrderNum
HAVING COUNT(*) = 1 

Вы можете попробовать что-то вроде

SELECT o.OrderNum 
FROM 
  Order_Detail o 
INNER JOIN 
  Item_Master m
On o.ItemNum = m.ItemNum
WHERE m.Item_Type = 'Phone'
GROUP BY o.OrderNum
HAVING COUNT(*) = 1 
Другие вопросы по тегам