2016-09-06 13 views
2

こんにちは私は、分に関連付けられた行から情報を取得する方法があるのだろうかと思っています。したがって、以下の例では、各顧客のmin(日付)と関連する情報を取得するだけです。アグリゲートに関連付けられたバックラインを取得します。 min

Cust_id   Date    information 
    ----------------------------------------------------- 
    12345   2015-04-03   blue hat 
    12345   2015-04-05   red scarf 
    12345   2015-04-02   blue hat 
    12345   2015-04-08   yellow submarine 
    54321   2015-04-12   yellow submarine 

結果は次のようになります。これを取得するには、現時点では

Cust_id   Date    information 
    ----------------------------------------------------- 
    12345   2015-04-02   blue hat 
    54321   2015-04-12   yellow submarine 

私は、顧客ごとに分(日付)を出すために一時テーブルまたはサブクエリを使用しますと、その日に再びテーブルに参加してください。

SELECT cust_id 
,  MIN(date) 
INTO #TempTable 
FROM dataset 
GROUP BY cust_id 


SELECT cust_id 
,  date 
,  information 
FROM dataset A INNER JOIN #TempTable B ON A.cust_id = B.cust_id 
             AND A.date = B.date 

このアプローチは動作しますが、私は1つのプルの中でそれを行うには非常にクリーンでシンプルな方法があると想像します。多分私が気づいていない機能ですか?

この上の任意のヘルプ、アドバイス、例またはソースが非常に高く評価されるだろう、

おかげで、

ボブ

+0

サブクエリで分を選択し、外側のクエリでメインテーブルに戻ってジョインします。ここには、必要に応じてサンプルコードを提供できるトピックがいくつかあります。 – Shadow

+0

一時テーブルまたは派生テーブルを使用するのは、MySQLを使用する方法です。他のデータベースには、Postgresqlの 'distinct on'や(多くのデータベースで)ウィンドウ関数を使うなど、より多くのオプションがあります。 – jpw

答えて

0

代わりに一時テーブルを作成するのではなく、サブクエリでとで最小値を取得します外側のクエリがメインテーブルに戻ってきます。

+0

サブクエリも使用します。私はちょうどサブクエリ/誘惑を使って過度に畳み込まれた方法で事をやっていると思った(論理的な考え方は本質的に両者にとって同じです)。みんなにお返事ありがとう、私はそれについて今疑問に思って止めることができます:)。 – Bob

+0

サブクエリの場合、MySQLはテンポラリテーブルを作成することもあれば作成しないこともあるので、より多くのオプションがあります。しかし、MySQLでこれを行う別の方法は、非標準の 'group by'節、MySQLの特定の設定、および通知なしに変更される可能性のある文書化されていない実装の詳細に依存しています。そのルートを降りてください。 – Shadow

関連する問題