код продукта повторяется в запросе

71
9

У меня есть эти таблицы

Продукт

IDProd || имя

Time_Price

IDPrice || IDProd || Цена || Время

запрос:

SELECT P.IDProd,P.Name,TP.Price,MAX(TP.Time)

FROM Product P INNER JOIN Time_Price TP ON P.IDProd=TP.IDProd

GROUP BY P.IDProd,P.Name,TP.Price

Мне нужно, чтобы код продукта не повторялся

спросил(а) 2013-09-10T05:28:00+04:00 7 лет назад
1
Решение
70

Это даст вам последнюю Price за каждый продукт.

SELECT  IDProd, Name,
IDPrice, Price, Time
FROM
(
SELECT a.IDProd, a.Name,
b.IDPrice, b.Price, b.Time,
ROW_NUMBER() OVER (PARTITION BY a.IDProd ORDER BY b.Time DESC) rn
FROM Product a
INNER JOIN Time_price b
ON a.IDProd = b.IDProd
) a
WHERE a.rn = 1

без использования оконной функции,

SELECT  a.IDProd, a.Name,
b.IDPrice, b.Price, b.Time
FROM Product a
INNER JOIN Time_price b
ON a.IDProd = b.IDProd
INNER JOIN
(
SELECT IDProd, MAX(Time) Time
FROM Time_price
GROUP BY IDProd
) c ON b.IDProd = c.IDProd AND
b.Time = c.Time

ответил(а) 2013-09-10T05:32:00+04:00 7 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема