2016-09-06 1 views
0

は例えば、二人はテーブルの参加:1つの列の最小値を一時列に配置する方法はありますか?

ID Name Date 
1 a  4-1-2010 
1 z  3-3-1999 
1 c  1-1-2012 
2 e  7-9-2005 
2 r  5-1-2000 

をそして私はこれに表を照会したいと思います:

ID Name Date  MinDate 
1 a  4-1-2010 3-3-1999 
1 z  3-3-1999 3-3-1999 
1 c  1-1-2012 3-3-1999 
2 e  7-9-2005 5-1-2000 
2 r  5-1-2000 5-1-2000 

が可能、このですか?

My query is as following: 
    Select *, Min(Date) AS MinDate 
    From table1 
    Join table1 on table1.ID = table2.ID 
    Group By ID 
+1

ありがとう@sgeddes、私はテーブルをフォーマットするために編集しようと苦しんでいたそして、メインテーブル(T)内の対応するIDSにそれらの最小値に参加! – Lisa

+0

「2つの結合されたテーブル」とはどういう意味ですか?クエリでそのデータが生成された場合は、質問にクエリを含める必要があります。 –

+0

ここで日付構造はオフですか? YYYY-MM-DDが期待されます – kbball

答えて

0

は、それはあなたのテーブル構造なしで理解することは少し難しいですが、あなたはgroup byを使用せずにwindow functionsを使用して、グループごとにmin日付を取得することができます。 min() overを使用した例を次に示します。

select id, name, date, 
    min(date) over (partition by id) mindate 
from table1 
    Join table2 on table1.ID = table2.ID 
0

ここには動作するものがあります。サブクエリ(サブ)を実行して、すべての最小日付値をidで検索します。ここでテスト

SELECT T.id, T.name, T.date, sub.mindate 
FROM T 
LEFT JOIN 
(SELECT id, min(date) AS mindate 
FROM T 
GROUP BY id) sub 
ON T.id = sub.id 

http://sqlfiddle.com/#!9/f539db/3

関連する問題