作者Catbert (宅男)
看板Database
标题Re: [SQL ] Oracle 的问题
时间Wed Nov 10 07:34:32 2010
※ 引述《passersby (passersby)》之铭言:
: 请教一个问题
: 我们是Oracle 10g的资料库
: 目前有三张Table如下
: Table: PartData
: PartNo PartName
: ------------------
: Y00001 电脑主机
: Y00002 滑鼠
: Y00003 萤幕
: Y00004 印表机
: Table: PO
: POno PurcDate
: ---------------------------
: PO-201011001 2010/11/2
: PO-201010001 2010/10/16
: PO-201009001 2010/9/30
: PO-201010002 2010/10/23
: PO-201008001 2010/8/26
: PO-201007001 2010/7/24
: Table: POList
: PONo PartNo PurcPrice PurcNum
: --------------------------------------------
: PO-201011001 Y00001 25000 100
: PO-201010001 Y00001 15000 50
: PO-201009001 Y00002 200 653
: PO-201010002 Y00002 120 1000
: PO-201008001 Y00002 213 500
: PO-201007001 Y00003 50 100
: 而我想要抓出以下的资料
: PartNo PartName PurcDate PurcPrice
: -------------------------------------------
: Y00001 电脑主机 2010/11/2 25000
: Y00002 滑鼠 2010/10/23 120
: Y00003 萤幕 2010/7/24 50
: Y00004 印表机 - -
: 目前我下
: SELECT PartData.PartNo, PartData.PartName,PO.PurcDate,POList.PurcPrice
: FROM PO,POList,PartData
: WHERE PO.PONo = POList.PONo AND POList.PartNo = PartData.PartNo
: 但是这样捞出来的资料会有重复,我只想要抓PurcDate是最新的跟对应的PurcPrice
: 不知道要怎麽下会比较好呢?
: 敬请指教orz
SELECT Pur.PartNo, Pur.PartName, Pur.PurcDate, Pur.PurcPrice
FROM (
SELECT PartData.PartNo
, PartData.PartName
,PO.PurcDate
,POList.PurcPrice
,rank() over(partition by PartData.PartNo order by PO.PurcDate desc) Rank
FROM PO.PONo = POList.PONo AND POList.PartNo = PartData.PartNo
) Pur
WHERE Pur.Rank = 1
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.22.238
1F:推 passersby:谢谢你 我会试试看 :) 11/11 11:03