2012-07-17 49 views
0

我有一張表,其中包括3列Company,DateTimePriceSQl查詢:每個公司的最後一個日期?

我想最後一排由每家公司的日期排序,像

Google, 2012/7/17 5:24:32, 23 
Google, 2012/7/17 5:46:23, 72 
Google, 2012/7/17 5:43:46, 15 
Apple, 2012/7/17 5:24:45, 36 
Apple, 2012/7/17 5:26:42, 57 
Apple, 2012/7/17 5:15:12, 25 

和所期望的結果將是:

Google, 2012/7/17 5:46:23, 72 
Apple, 2012/7/17 5:26:42, 57 
+1

你是什麼試過.... ??? – Jalpesh 2012-07-17 09:03:07

+1

whathaveyoutried.com – Scharron 2012-07-17 09:03:21

+1

什麼[DBMS](http://en.wikipedia.org/wiki/Database_management_system)? – 2012-07-17 09:09:21

回答

0

這是一個數據庫管理系統無關的解決方案也不管應該工作您正在使用哪種DBMS(如您未指定):

SELECT a.* 
FROM tbl a 
INNER JOIN 
(
    SELECT company, MAX(datetime) AS maxdate 
    FROM tbl 
    GROUP BY company 
) b ON a.company = b.company AND a.datetime = b.maxdate 
ORDER BY a.datetime DESC 
0
select 
    Company, DateTime,Price 
from 
    (
    select *,row_number() over (Partition by Company order by Date desc) as sno 
     from table 
    ) as t 
where sno=1 
1

如果你的DBMS是SQL-Server(至少2005年),可以使用一個CTEROW_NUMBER功能:

WITH CTE AS(
    SELECT Company, DateTime, Price 
    , RN = ROW_NUMBER()OVER(PARTITION BY Company ORDER BY DateTime DESC) 
    FROM Table 
) 
SELECT Company, DateTime, Price 
FROM CTE 
WHERE RN = 1 
0

試試這個

select t.* from <table> t join 
(select Company,max(DateTime) max_DateTime 
from <table> 
group by Company)a 
on t.Company=a.Company 
and t.DateTime=a.max_DateTime 
0

容易的:

select company, MAX(datetime), price 
from table_name 
group by company; 
相關問題