0

MySQLでクエリを作成する際に少し問題があります。

これは私が私のデータベースに持っているものです

Part #    Desc.  Tracking #   EquivalentKey  Qty    PriceEach
A         aa      123         1               2     .30
B         dd      342         1               10    1.40
C         dfd     2343        2               100   3
D         awe     43455       3               90    6
E         dffd    5643        2               10    5

したがって、このデータを考えると、これは私の望ましい出力です

Part#      Equivalent Part # 1       Total Qty    Weighted Avg Price
A          B                         12           1.358

... 等々

基本的に、PNでグループ化し、次に同等のPNでグループ化し、すべてのPNを同じ行に表示し、totを追加します。これを行う方法はありますか?Group By関数を試しましたが、同等のPNの別の行が表示されます

事前にどうもありがとうございました

4

2 に答える 2

1

あなたができることはこれです:

SELECT 
    GROUP_CONCAT(Part) AS Parts
  , EquivalentKey
  , SUM(Qty) AS Total_Qty
  , SUM(Qty * PriceEach) / SUM(Qty)
        AS Weighted_Avg_Price
FROM 
    table
GROUP BY 
    EquivalentKey ;
于 2013-01-02T19:22:44.193 に答える
1

持っていない場合はGROUP_CONCAT()、次を使用できます。これは、EquivalentKey ごとに 2 つの部分番号のみを想定しています。

select min(partno) PartNo, 
  max(partno) EquivalentPartNo,
  TotalQty,
  WeighedAvgPrice
from yourtable t1
left join
(
  select EquivalentKey,
    sum(qty) TotalQty, 
    sum(qty * priceeach) / sum(qty) WeighedAvgPrice
  from yourtable
  group by EquivalentKey
) src
  on t1.EquivalentKey = src.EquivalentKey
group by TotalQty, WeighedAvgPrice;

デモで SQL Fiddle を参照してください

またはサブクエリなし:

select min(partno) PartNo, 
  max(partno) EquivalentPartNo,
  sum(qty) TotalQty,
  sum(qty * priceeach) / sum(qty) WeighedAvgPrice
from yourtable t1
group by EquivalentKey;

デモで SQL Fiddle を参照してください

アクセスできる場合はGROUP_CONCAT()、次を使用します。

select GROUP_CONCAT(partno) PartNo, 
  sum(qty) TotalQty,
  sum(qty * priceeach) / sum(qty) WeighedAvgPrice
from yourtable t1
group by EquivalentKey;

デモで SQL Fiddle を参照してください

于 2013-01-02T19:34:14.707 に答える