Получать результаты только тогда, когда один столбец не существует более одного раза - PullRequest
0 голосов
/ 20 сентября 2019

Хорошо, поэтому в этом случае разные не работают, потому что это не модификатор одного столбца, а весь модификатор результата, не совсем уверенный в том, что использовать, я выполняю упражнения adventureworks:

Запроссделано до сих пор:

select SalesOrderID, UnitPrice
from SalesOrderDetail
inner join Product
on SalesOrderDetail.ProductID = Product.ProductID

это оригинальное утверждение без «отдельной» части, это результаты, которые я получаю, как вы можете видеть, я получаю несколько повторных идентификаторов, и вопрос просит меня получитьпросто «заказы по одному элементу», то есть заказы, содержащие только одну деталь

SalesOrderID    UnitPrice
71774    356.90
71774    356.90
71776    63.90
71780    218.45
71780    461.69
71780    113.00
71780    818.70
71780    323.99
71780    149.87
71780    809.76
71780    1376.99
71780    158.43
71780    1391.99

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019
Select OD.SalesOrderID, UnitPrice
from SalesOrderDetail as OD
inner join Product as P
on OD.ProductID = P.ProductID
inner join (select SalesOrderId
from SalesOrderDetail 
GROUP BY SalesOrderId
HAVING COUNT(1) = 1) as OneOD on OneOD.SalesOrderId = OD.SalesOrderId 

Это должно получить желаемые результаты.Спасибо ..

2 голосов
/ 20 сентября 2019

Вы можете попробовать агрегировать здесь по SalesOrderID, а затем сохранить минимальную цену за единицу:

SELECT
    sod.SalesOrderID,
    MIN(p.UnitPrice) AS UnitPrice
FROM SalesOrderDetail sod
INNER JOIN Product p
    ON sod.ProductID = p.ProductID
GROUP BY
    sod.SalesOrderID
HAVING
    COUNT(*) = 1;

Это работает, потому что для заказов на продажу, имеющих только один продукт, минимальная цена за единицу совпадает содна единичная цена за единицу.

Обратите внимание, что я предполагаю, что с каждым заказом на продажу связана как минимум одна запись о продукте.Внутреннее объединение отфильтровывает заказы на продажу без продуктов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...