0

Companyと の 3 つの列を含むテーブルがDateTimeありPriceます。

各会社の日付順の最後の行を取得したい

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
4

5 に答える 5

1

お使いの DBMS がSQL-Server(少なくとも 2005) の場合は、CTEwithROW_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
于 2012-07-17T09:05:38.387 に答える
0

簡単なもの:

select company, MAX(datetime), price 
from table_name
group by company;
于 2012-07-17T09:21:29.860 に答える
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
于 2012-07-17T09:09:54.987 に答える
0

これは DBMS に依存しないソリューションであり、使用している 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
于 2012-07-17T09:03:53.633 に答える
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
于 2012-07-17T09:04:28.247 に答える