2013-11-01 63 views
0

我有一個表發現最大/最小天,並得到某些列的第一個差異

Col1中的結構=日期 col2的= ID_Product COL3 =價格 COL4 = Units_Sold

我的表名「TBL」

如果我想找到最大和最小日期爲每個ID_Product,並找到在價格變化相伴的Units_Sold> 0,woudl我究竟怎麼了有組織有「正確的方式」

執行這個查詢

我現在的版本看起來很複雜,必須有更好的方法來完成這樣的事情。

這基本上就是我想要做的,但它不表現爲我所期望的:

select * 
from 
(select id,min(dt) as dt,fields from table where field>0 group by id,dt) as a 
left join 
(select id,max(dt) as dt,field from table where field>0 group by id,dt) as b 
on a.id=b.id 

回答

0

你可以用ORDER做到這一點BY和LIMIT或查找到SQL MAX()和MIN( )用某種子查詢功能。我將爲第一種方式提供一個非語言特定的示例,並指導您解決第二種方式的問題。

http://www.w3schools.com/sql/sql_func_max.asp

不知道你所使用的語言:

for (products p) 
    { 
     pNewest = executeQuery("SELECT * FROM tbl ORDER BY date DESC LIMIT 1"); 
     pOldest = executeQuery("SELECT * FROM tbl ORDER BY date ASC LIMIT 1"); 
     double difference = Math.abs(pNewest["price"] - pOldest["price"]); 
    } 

方式二: SQL Server: how to imitate oracle keep dense_rank query?

http://www.w3schools.com/sql/sql_func_max.asp

相關問題