2017-10-25 12 views
0

を得るために、私は、SQLテーブルを持っているSQLクエリの最近の項目に

id item date 
A apple 2017-09-17 
A banana 2017-08-10 
A orange 2017-10-01 
B banana 2015-06-17 
B apple 2014-06-18 

は、どのように私は、SQLクエリを記述します。例:

id recent second_recent 
a orange apple 
b banana apple 
+0

例で詳細を見る使用することができますか?答えはシステムによって異なります。 mysql <> SQLサーバ。 –

+1

- あなたは何を試しましたか?これは私のサイトではありません – Randy

+0

互換性のないデータベースタグを削除しました。 SQL ServerとMySQLは同じものではありません。 –

答えて

4

row_number()と条件付き集計を使用できます。

select id, 
     max(case when seqnum = 1 then item end) as most_recent, 
     max(case when seqnum = 2 then item end) as most_recent_but_one, 
from (select t.*, 
      row_number() over (partition by id order by date desc) as seqnum 
     from t 
    ) t 
group by id; 
0

などが上言った:私はあなたが2つの値を取得することにより、順序で同じことを行うことができると思いますが

SELECT mt.*,  
FROM MyTable mt INNER JOIN 
    (
     SELECT item AS recent, MIN(date) MinDate, ID 
     FROM MyTable 
     GROUP BY ID 
    ) t ON mt.ID = t.ID AND mt.date = t.MinDate 

minから取得するには、GROUP BYを使用する必要があります SQL: Group by minimum value in one field while selecting distinct rows

0

あなたはピボットテーブル

SELECT first_column AS <first_column_alias>, 
[pivot_value1], [pivot_value2], ... [pivot_value_n] 
FROM 
(<source_table>) AS <source_table_alias> 
PIVOT 
(
aggregate_function(<aggregate_column>) 
FOR <pivot_column> IN ([pivot_value1], [pivot_value2], ... [pivot_value_n]) 
) AS <pivot_table_alias>; 

は、使用しているDBMSここ Example

関連する問題