Re: [SQL ] 怎麼求最大值/最小值?

看板Database作者 (多想兩分鐘 = =")時間15年前 (2008/12/05 15:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
想像錯誤,我JOIN不出來…囧rz DECLARE @T TABLE(PARTID CHAR(5),DMC INT, DMLC INT, OC INT, VDATE CHAR(12)) INSERT @T VALUES('A-120',12,100,10,'20080101') INSERT @T VALUES('A-120',10,100,10,'20080228') INSERT @T VALUES('A-120',12,150,10,'20080501') INSERT @T VALUES('A-120',10,100,18,'20080602') INSERT @T VALUES('B-002',3,4,8,'20080202') INSERT @T VALUES('B-002',3,5,5,'20080505') INSERT @T VALUES('B-002',6,1,1,'20080505') --SELECT * FROM @T ;WITH A AS( SELECT PARTID,MAX(DMC)DMC,MAX(DMLC)DMLC,MAX(OC)OC FROM @T GROUP BY PARTID ) SELECT * ,(SELECT MIN(VDATE) FROM @T WHERE PARTID+str(DMC)=A.PARTID+str(A.DMC))DMCDATE ,(SELECT MIN(VDATE) FROM @T WHERE PARTID+str(DMLC)=A.PARTID+str(A.DMLC))DMLCDATE ,(SELECT MIN(VDATE) FROM @T WHERE PARTID+str(OC)=A.PARTID+str(A.OC))OCDATE FROM A /* PARTID+str(DMC)=A.PARTID+str(A.DMC)這段如果有key就用key會比較好 整個寫法沒啥特別的,效率感覺也不好… */ ※ 引述《mindscold (Minds)》之銘言: : 請問我有一張表格如下: : TableA : PartID DMC DMLC OC VDate : =================================== : A-120 12 100 10 2008/1/1 : A-120 10 100 10 2008/2/28 : A-120 10 150 10 2008/5/1 : A-120 10 100 18 2008/6/2 : B-002 3 4 8 2008/2/2 : B-002 3 5 5 2008/5/5 : B-002 6 1 1 2008/5/5 : : : : : =================================== : 我希望能找出單一PartID中,DMC、DMLC、OC最大的值,與該值座落的日期,也就是像下 : 面的: : View : PartID DMC DMCDate DMLC DMLCDate OC OCDate : ================================================ : A-120 12 2008/1/1 150 2008/5/1 18 2008/6/2 : B-002 6 2008/5/5 5 2008/5/5 8 2008/2/2 : : : : : ================================================== : ↑像這樣子的。本來是想用Group by PartID後,去各別找出MAX(DMC)、MAX(DMLC)、 : MAX(OC)後join起來,可是想想這樣豈不是落落長、且總覺得好像效率不高,想想問版眾 : 有沒有更好的方法呢?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.172.157
文章代碼(AID): #19EDfesB (Database)
文章代碼(AID): #19EDfesB (Database)