2016-11-17 8 views
1

これは既に別のスレッドで議論されている場合は事前にお詫び申し上げます。私はいくつかの検索を実行しましたが、私のニーズをサポートするものを見つけることができませんでした。 私はt_Item_logと呼ばれるテーブルを持っています。私は、データを引き出し、アイテムごとにグループ化し、アイテムの総量を合計し、そのアイテムに関連付けられた最大の数量を持つコードを選択するクエリを書く必要があります。SQLグループバイステートメント値が最大数で選択されています

表例:

ID ITEM CODE QTY 
1 12345 X  1 
2 12345 X  2 
3 12345 Y  1 
4 12345 Z  3 
5 6789  X  1 
6 6789  X  2 
7 6789  Y  1 
8 6789  Z  2 
9 6789  X  3 
10 12345 Y  4 

望ましい結果

ITEM CODE QTY 
12345 Y  11 
6789 X  9 

誰もがすでにこれをカバーするか、この文の書き方のための基盤を提供するスレッドに私を指すことができれば、それ感謝されます。

答えて

0

これは、複雑なクエリです。

select ei.item, 
     (select top 1 e2.code 
     from example as e2 
     where e2.item = ei.item 
     group by e2.code 
     order by count(*) desc, max(e2.id) 
     ) as code, 
     ei.qty 
from (select e.item, sum(e.qty) as qty 
     from example as e 
     group by e.item 
    ) as ei; 

order by句でmax(e2.id)の使用:ここで相関サブクエリを使用する方法があります。 MS Accessでは、TOPは実際にはTOP WITH TIESです。 idを含めると、1行だけが返されることが保証されます。

EDIT:相関サブクエリなし

、計算がより苦痛です。このようなもの:

select e.item, e.qty, i.code 
from ((select e.item, sum(e.qty) as qty 
     from example as e 
     group by e.item 
    ) as ei inner join 
     (select e.item, max(cnt) as maxcnt 
     from (select e.item, e.code, count(*) as cnt 
      from example e 
      group by e.item, e.code 
      ) as ic 
     group by e.item 
    ) as i 
    ) inner join 
    (select e.item, e.code, count(*) as cnt 
     from example e 
     group by e.item, e.code 
    ) ic 
    on ic.item = i.item and ic.cnt = i.cnt; 
+0

私は次のエラーメッセージが表示され続けます: "メインクエリのFROM句でEXISTS予約語を使わずに複数のフィールドを返すサブクエリを作成しました。 – HareM83

+0

@ HareM83。 。 。これは、サブクエリが 'TOP'を使用し、安定した' ORDER BY'ソートを持つ非常に奇妙なエラーです。私はこれを回避する方法がわかりません。 –

+0

ありがとうございます。これは完全に機能しました。 – HareM83

0

は、相関クエリを使用してください:あなたが最も一般的なコードを取得するために集約する必要があるため

SELECT t.item, 
     (SELECT TOP 1 s.code FROM t_Item_log s 
     WHERE s.item= t.item 
     ORDER BY s.qty DESC) as code_of_max_qty, 
     SUM(t.qty) 
FROM t_Item_log t 
GROUP BY t.item 
+0

「LIMIT」はMySqlで動作するはずですが、msアクセスでも動作しますか? –

+0

クイック返信をありがとう。私はこれを試してみる。 – HareM83

+0

@ZoharPeledおっと、ありがとうございます。 – sagi

関連する問題