Условия в SQL для обеспечения правильного вывода - PullRequest
0 голосов
/ 20 февраля 2012

Я столкнулся с серьезной проблемой.

Мне нужно, чтобы в следующей таблице были представлены уникальные данные, когда я имею в виду уникальность, нужна только одна запись customerID. Также цена должна быть максимальной.

--------------------------------------
customerID, basketID, orderID, productID, price
--------------------------------------
1, 1001, 101, 24, 15
1, 1001, 102, 24, 15
1, 1001, 103, 28, 19

Как вы можете видеть, значение orderID увеличивается на единицу, даже если это одна и та же корзина, клиент и продукт. Это показывает количество продуктов.

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

--------------------------------------
customerID, basketID, orderID, productID, price
--------------------------------------
1, 1001, 103, 28, 19

Запрос должен начинаться с select, и Order By не может использоваться, поскольку система, которую мы используем, не поддерживает это.

Если бы кто-нибудь имел хоть малейшее представление о том, что мне следует делать, было бы замечательно.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 20 февраля 2012

Следующее будет работать, если у вас есть более одного ID клиента / корзины:

select t1.* from tablename t1
inner join (select customerID, basketID, max(Price) as Price from tablename
group by customerID, basketID) t2 on t1.customerID = t2.customerID and t1.basketID = t2.basketID and t1.Price = t2.Price 
0 голосов
/ 20 февраля 2012

попробуйте это:

SELECT * FROM t 
 WHERE (customer_id, price) IN (SELECT customer_id, MAX(price)
                                  FROM t GROUP BY customer_id)
0 голосов
/ 20 февраля 2012

попробуйте следующее:

SELECT customerID, basketID, orderID, productID, price
FROM TABLENAME t
WHERE price = (select max(price) from TABLENAME t2 where t.customerID = t2.customerID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...