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

如果您没有,GROUP_CONCAT()那么您可以使用以下假设每个 EquivalentKey 仅包含两个部件号:

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 回答
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 回答