1

私はこれに似たテーブル構造を持っています:

    id | order1_id | order1_type | order1_amount | order2_id | order2_type | order2_amount
------------------------------------------------------------------------------------------
    1        1           3             4                 1         4              5
    2        2           1             1                 1         3              2
    3        1           4             4                 2         2              1

私はこのようなデータを取得したい:

order_id | 注文タイプ | 注文金額

1          3            6
1          4            9
2          1            1
2          2            1

タイプごとにグループ化し、注文金額を合計したい。どうやってやるの ?

ありがとう、

4

2 に答える 2

3

サブクエリでユニオンを使用して列を並べ、それをグループ化して合計します。

この理想的とは言えないテーブル構造にとらわれていると仮定すると、以下のサブクエリを表すビューを作成し、そのビューに対して group by/sum を実行することができます。このようなビューは、この 1 つのクエリだけでなく、より多くの場所で役立つ可能性があると思います。

select t.order_id, t.order_type, sum(t.order_amount)
from (select order1_id as order_id, order1_type as order_type, order1_amount as order_amount
      from orders
      union all
      select order2_id as order_id, order2_type as order_type, order2_amount as order_amount
      from orders  
      union all        
      select order3_id as order_id, order3_type as order_type, order3_amount as order_amount
      from orders 
      union all         
      select order4_id as order_id, order4_type as order_type, order4_amount as order_amount
      from orders    
      union all      
      select order5_id as order_id, order5_type as order_type, order5_amount as order_amount
      from orders) t
group by t.order_id, t.order_type
于 2011-01-11T04:24:16.087 に答える
2

簡単な方法は、ビューを使用して疑わしい設計のテーブルを解きほぐし、ビューをグループ化して合計することです。

create view normalized_orders as
select order1_id as order_id, 
    order1_type as order_type,
    order1_amount as order_amount
    from your_table
union all
select order2_id as order_id, 
    order2_type as order_type,
    order2_amount as order_amount
    from your_table

次に、これを行うことができます:

select order_id, order_type, sum(order_amount) 
from normalized_orders
group by order_id, order_type
order by order_id, order_type
于 2011-01-11T04:36:23.463 に答える