2017-06-16 25 views
-2

Table StructureMYSQL - 顧客

Expected Result

でグループ化された最新の日付のレコードのSUMは、最新の日付の合計(終値)である各顧客のために閉じフェッチするクエリを作成したいと思います。

私を助けてもらえますか?

+0

あなたの欲望の結果もここに入れてください –

+0

何か試しましたか?予想される結果と試したコードを投稿してください。 – axiac

+0

@axiac申し訳ありません、私はここで新しいです。画像を追加しました –

答えて

0

downvotesの猛攻撃にもかかわらず、1つのアプローチでは、サブスクリプションを使用して、顧客の最新の日付に制限することができます。

SELECT 
    t1.customer_id, 
    SUM(closing) AS closing_sum 
FROM yourTable t1 
INNER JOIN 
(
    SELECT customer_id, MAX(entry_dt) AS max_entry_dt 
    FROM yourTable 
    GROUP BY customer_id 
) t2 
    ON t1.customer_id = t2.customer_id AND 
     t1.entry_dt = t2.max_entry_dt 
GROUP BY t1.customer_id 
+0

正確な結果が得られます。 entry_dtではなく、created_dtを考慮する必要があります。変更を行い、実装するだろう...ありがとうたくさん –

0

@tim

私は以下のようにクエリを変更しました。

SELECT 
    a.customer_id, 
    SUM(closing) AS closing_sum 
FROM empty_accounting a 
INNER JOIN 
(
    SELECT customer_id, MAX(created_dt) AS max_created_dt 
    FROM empty_accounting 
    GROUP BY customer_id 
) b 
    ON a.customer_id = b.customer_id AND 
     a.created_dt = b.max_created_dt 
GROUP BY a.customer_id 

しかし、created_dtが秒単位で違うと心配ですが、合計されることはありません。

最新のcreated_dtのentry_dtを見つけて、各顧客のentry_dtの終了を合計する方法はありますか?

注:entry_dtはトランザクションが実際に発生した日付で、 で、created_dtはシステムでレコードが作成された日付です。ですから、created_dtフィールドを使用して最新のレコードを見つける方が良いと感じています

+0

これは、スタックオーバーフローの仕組みではありません。私の答えが正しいか、あなたの問題がほぼ解決されたら、それを正しいものにしてください。 –

関連する問題