我有一张这样的桌子(我希望你能理解)
ProductID BoxNo Qty
A 1 3
A 1 3
A 1 3
B 1 2
B 1 2
B 2 1
C 1 1
如您所见,产品A,包装盒1的数量为3,然后在表格中显示3次,产品B,包装盒#1的数量为2,显示2次,依此类推... < / p>
我希望我的结果像这样
ProductID Max(BoxNo) Total
A 1 3
B 2 3
C 1 1
使用此查询
Select distinct productid, max(BoxNo), sum(qty) as Total from [Table1] group by productid order by productid
结果将是
ProductID Max(BoxNo) Total
A 1 9
B 2 5
C 1 1
如果你想知道为什么我不只是使用计数它是因为有时候会有一个数量为10的列只出现一次,如果算上那个,它将被计为1而不是10
答案 0 :(得分:2)
您可以将此视为选择后应用了distinct。您的查询(没有明确的):
select pid, max(box), sum(qty) from t group by pid order by pid
结果为1行:
A 1 9
明显不会有任何影响。您可以在聚合之前应用distinct,如:
select pid, max(box), sum(qty) from (
select distinct pid, box, qty from t
) group by pid order by pid
或使用distinct进行计数:
select pid, max(box), sum(distinct qty) from t group by pid order by pid
为什么表格中有重复的行?
答案 1 :(得分:1)
也许这就是你想要的东西?
SELECT
ProductID,
MAX(BoxNo) AS MaxBoxNo,
SUM(Qty) AS TotalQuantity
FROM (SELECT DISTINCT * FROM Table1) YourTable
GROUP BY ProductID