私は1つのテーブルを持っています(1つしかありません)。自己参加の問題だと思いますか?
植物コード、記事番号、およびその記事に関連するバッチが含まれています。
plant - code - batch - value - volume - added_date
A1 1000 A1 10 20 date
A1 2000 A7 20 15 date
A1 1000 A1 5 10 later than first A1 batch
A2 200 A8 10 9 date
A1 2000 A10 20 20 date
どのように私はこのように、この情報を提示することができます。各工場やコードのために、唯一の最新の追加バッチのバッチのDISTINCT
数とボリュームを表示(plant A1
にそのコード1000注意はわずか10とを示しています最近追加されたバッチの量です)。
plant - code - batches - volume
A1 1000 1 10
A1 2000 2 35
A2 200 1 9
私はここに、以前の男からいくつかの助けを得て、同じ植物の同じ製品の同じ番号を持つ2つのバッチがある場合、私は、最新のバッチからボリュームを取得しようとするまで、そのクエリが素晴らしい作品。
SELECT code, plant,
COUNT(DISTINCT(batch)) as Batches,
SUM(value) as TotalValue,
SUM(volume) as TotalVolume,
SUM(value * risk) as TotalRisk,
FROM lists
GROUP BY code, plant
私はあなたには、いくつかの連結自己加入でそれを行うことができると思いますが、私は一つのテーブルのみで動作するために十分習熟していない午前:事前に/
ありがとう!
編集:実は、アドリアンがリンクしている答えは、説明されている問題を解決しました...しかし、他のすべてをその解決策で動作させることは難しいようです。私は自分自身の「問題」の一部しか説明していませんでした。残りの部分を自分で解決するには十分だと思いました。しかし、私は間違っていました。最新の追加されたバッチとボリュームが必要なだけでなく、バッチに対していくつかのSUM操作を行う必要があります。私はそれが2つの異なるテーブルにデータを配置し、そこから作業することが最善であると考えています。ここで
あなたはあなたの手で持っている[タグ:最大-N-あたり-グループ]の問題を。私はあなたのためのテーラーメードの答えを書く時間が足りないので、ここで読むために時間をかけてください:http://stackoverflow.com/a/7745635/570191。それは正しい答えにあなたを導くでしょう –
ありがとうエイドリアン、私はそれを読むでしょう!最初に私はあなたの問題のための解決策がなかったと言うことに恐れていました:) – Josef
あなたの問題を解決するためにもっと多くの方法があります:)答えがあなたに役立つならupvoteを忘れないでください –