4

MySQLはまだ私にとってかなり新しいので、この特定の問題に対する答えを見つけるのは困難です。

1つのテーブルに結合したいベンダーテーブルが約60あります。多くのベンダーが同じアイテムを扱っているので、すべてのアイテムを1つのテーブルに追加し、同じskuを持つベンダーは数量を合計します。また、より高いコストと価格を挿入して、.99に切り上げたいと思いますが、複雑になりすぎたり、落ち着かない場合は、今のところSKUと数量だけに固執します。私はそれを理解できるまで2つのテーブルから始めたいと思います。そして、解決策を理解したら、それらすべてに取り組むことができます。2つのテーブルの例を次に示します。

Table A (SKU will be the primary key)
SKU     Vendor A SKU         Cost     Price      QTY
1000        VA100            49.99    62.99      10
1001        VA101            64.44    81.99      6
1002        VA102            37.67    47.99      24
1003        VA103            28.33    35.99      16
1004        VA104            26.33    35.99      18

Table B (SKU will be the primary key)

SKU     Vendor B SKU         Cost    Price       QTY
1000        VB100            49.99   62.95        21
1001        VB101            64.44   81.95        16
5001        VB501            32.67   40.95         4
5002        VB502            88.44   110.95      12
5003        VB503            87.21   109.95       2

したがって、最終結果は次のようになります

SKU     Vendor A SKU     Vendor B SKU      Cost           Price         QTY
1000        VA100               VB100      49.99         62.99          31 <-- Sum
1001        VA101               VB101      64.44         81.99          22 <-- Sum
1002        VA102                          37.67         47.99          24
1003        VA103                          28.33         35.99          16
1004        VA104                          26.33         35.99          18
5001                            VB501      32.67         40.95           4
5002                            VB502      88.44         110.95         12
5003                            VB503      87.21         109.95          2

ご覧のとおり、最初の2つには数量が加算され、コストと価格の大きい方が挿入されています。私は次のバリエーションを試しました:

Create Table MASTER
SELECT TableA.sku,TableA.VendorA_sku,TableA.cost,TableA.price,TableA.qty
UNION ALL
SELECT TableB.sku,TableB.VendorB_sku,TableB.cost,TableB.price,TableB.qty
GROUP BY sku

そしてのバリエーション:

Create Table MASTER
AS SELECT TableA.sku,TableA.VendorA_sku,TableA.cost,TableA.price,SUM(TableA.qty+TableB.qty)
GROUP BY sku

さまざまな種類の結合と結合を試しましたが、必要な方法で何も表示されないようです。また、コストと価格の加算と丸めを試してみたことがありません。重複する主キーに数量を追加します。私はこれを毎日約60のテーブルと約600kのSKUで行う必要があるので、助けていただければ幸いです。

これらのタイプのフォーラムは初めてなので、これを正しく入力しなかった場合も、事前に謝罪します

4

1 に答える 1

2

以下はあなたのために働くはずです:

select sku,
  min(case when Type = 'VendorA' THEN Vendor END) VendorA_SKU,
  min(case when Type = 'VendorB' THEN Vendor END) VendorB_SKU,
  cost,  
  price, 
  sum(QTY) Total
from
(
  select sku, VendorA_SKU Vendor, cost, price, qty, 'VendorA' Type
  from tablea
  union all 
  select sku, VendorB_SKU, cost, price, qty, 'VendorB' Type
  from tableb
) x
group by sku

SQL FiddlewithDemoを参照してください

決定するいくつかのこと、値が異なる場合、AVG()またはMAX()コストと価格が必要ですか、それともどちらを返しますか?その場合、以下を使用して戻りMAX()ます。

select sku,
  min(case when Type = 'VendorA' THEN Vendor END) VendorA_SKU,
  min(case when Type = 'VendorB' THEN Vendor END) VendorB_SKU,
  max(cost) MaxCost,
  max(price) MaxPrice,
  sum(QTY) Total
from
(
  select sku, VendorA_SKU Vendor, cost, price, qty, 'VendorA' Type
  from tablea
  union all 
  select sku, VendorB_SKU, cost, price, qty, 'VendorB' Type
  from tableb
) x
group by sku

SQL FiddlewithDemoを参照してください

于 2012-09-19T18:21:14.273 に答える