我在SQL服务器上有一个表SalePrices,数据如下:
SPID ProductID Price Date
001 Pro01 10 2016-03-10
002 Pro01 20 2016-03-11
003 Pro02 10 2016-03-13
004 Pro02 20 2016-03-15
我想要的是创建一个视图,该视图仅显示我上次修改过的一个ProductID和Price。所以我想要的与下面的结果相同:
ProductID Price Date
Pro01 20 2016-03-11
Pro02 20 2016-03-15
答案 0 :(得分:2)
这方面的方法很少,例如,使用ggplot
:
qplot(mpg, wt, data=mtcars) +
facet_grid(am + cyl ~ vs, labeller = label_both)
<强> sql fiddle demo 强>
答案 1 :(得分:1)
另一个带窗口函数的版本,这个版本带有FIRST_VALUE()
;
SELECT ProductID, price, date
FROM products
WHERE spid IN (
SELECT FIRST_VALUE(spid) OVER (PARTITION BY ProductID ORDER BY date DESC) spid
FROM products
)
请注意,带有ROW_NUMBER
的Roman版本应该可以在SQL Server 2005及更高版本中运行,而这只适用于SQL Server 2012及更高版本。
答案 2 :(得分:0)
尝试这个:
SELECT
ProductID
, Price
, Date FROM tablename AS A
JOIN (SELECT ProductID,MAX(Date) AS DATE FROM tablename
GROUP BY ProductID
) AS B ON A.Date=B.DATE AND A.ProductID=B.ProductID
答案 3 :(得分:0)
还有一种方法......
select productid,price,date
from
table t1
where date=(select max(date) from table t2 where t1.productid=t2.productid)
答案 4 :(得分:0)
您的最后一条记录的SPID最高:
select
ProductId, Price, Date
from
SalePrices sap
where
sap.spid =(
select
max(sap2.spid)
from
SalePrices sap2
where
sap2.productId = sap.productId)
此查询将给出您想要的结果:
ProductID Price Date
Pro01 20 2016-03-11
Pro02 20 2016-03-15