我想弄清楚如何確定產品的最新價格。我很掙扎,因為價格沒有更新,日期沒有達到正確的數字。這是我嘗試撰寫的代碼(我知道它不是最好的):
SELECT p.prodID, pr.price, MAX(pr.[from]) [date]
FROM Price pr
INNER JOIN Product p ON p.prodId = pr.prodId
GROUP BY p.prodID, pr.price;
對于這個問題,我有一個顯示多個不同日期價格的資料庫,但我試圖找到它最近的資料,例如:
INSERT INTO Price VALUES
(36, '20191221', 16.47)
INSERT INTO Price VALUES
(36, '20191226', 16.47)
INSERT INTO Price VALUES
(36, '20191229', 12.81)
INSERT INTO Price VALUES
(36, '20191230', 12.81)
這也是價格表:
Create Table Price (
prodId int Foreign Key References Product(prodId),
[from] date,
price decimal(10,2),
Constraint PK_Price Primary Key (prodId, [from])
);
為簡單起見,我只關注產品 36,但有許多不同的產品。當前結果顯示價格為 18.30,日期為 2019-10-12 我希望結果顯示價格為 12.81,日期為 2019-12-30。
uj5u.com熱心網友回復:
您可以使用row_number()視窗函式為每個產品的按日期訂購的價格分配一個數字。
SELECT x.[prodid],
x.[from],
x.[price]
FROM (SELECT p.[prodid],
p.[from],
p.[price],
row_number() OVER (PARTITION BY p.[prodid]
ORDER BY p.[from] DESC) [rn]
FROM price p) x
WHERE x.[rn] = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/359848.html
標籤:sql sql-server 数据库 日期
