2011-07-13 22 views
18

データベースからデータを取得していて、テーブルの1つに2つの列があり、それぞれの場所を特定し、サービスが提供されるたびに日付が含まれます。 SQLクエリを作成して、各場所でサービスされた最新の時刻を取得することは可能ですか?SQL:各カテゴリの最新の日付を選択してください

私の生データは、次のようになりますのであれば:

category_a category_b date 
     1   a  1/1/01 
     1   a  2/2/02 
     1   b  1/2/01 
     1   b  2/3/02 
     2   a  1/3/01 
     2   a  2/4/02 
     2   b  1/4/01 
     2   b  2/5/02 

その後、クエリは、この戻ってくる:

category_a category_b date 
     1   a  2/2/02 
     1   b  2/3/02 
     2   a  2/4/02 
     2   b  2/5/02 

をデータベースはそのような方法で作成された場合、これを行うのは簡単だろうカテゴリの組み合わせは別のテーブルに格納されていました。しかし、私はこのデータベースを制御しないので、変更することはできません。

+0

をお試しください – jp2code

+3

私は同じことを思っていました。私はSQLの専門家ではありませんが、私は私の質問をうまく説明したと思っていました... – Wilduck

+0

多分あなたは別のスレッドで誰かを怒らせ、彼らはここであなたを掘り起こして報復しました。私はそれが以前に起こった。 – jp2code

答えて

8
SELECT 
    category_a, 
    category_b, 
    MAX(date) 
FROM 
    Some_Unnamed_Table 
GROUP BY 
    category_a, 
    category_b 
ORDER BY 
    category_a, 
    category_b 

私は確かに助けて気にしないという事実を利用して、簡単な「でグループ」であります私ができるときに人々、または私はこのサイトにいないだろうが、あなたは本当にこれのための答えを投稿する前に検索しましたか?

+3

しました。残念ながら、私はこれをGoogleが可能な方法で説明する言葉はありませんでした。実際に、私は「ねじを締めて、誰かがこれに答える方法を知っています」と言う前に、CASEステートメントについて15分間読んだ。私は本当に助けに感謝します。 – Wilduck

+0

。私が助けることができてうれしい。 –

2

これは、「最新」の日付が「最高の価値」である、またはmax()、日付

select category_a, category_b, max(date) 
from mytable 
group by category_a, category_b 
order by category_a, category_b -- The ORDER BY is optional, but the example data suggests it's needed 
1

category_a、category_b、max(date)from category_a、category_bによるtblグループから選択します。

1

なぜこの質問に(-1)がありますか?

select category_a, category_b, max(date) as last_update from table group by category_a, category_b 
関連する問題