这是我在接近我想要的东西时得到的表格。
Equip unit qty
---------------
a 01 2
a 01 3
a 09 14
b 01 5
b 09 28
我试图找到值3 + 14 + 5 + 28。
我想将不同设备和不同单位的所有值相加,但如果单位相同,则应选择最大值(在这种情况下,我想选择3而不是2)。
我一直在努力寻找方法,但仍然不知道。你会如何解决这个问题?
答案 0 :(得分:0)
使用子查询:
select sum(qty)
from (select equip, unit, max(qty) as qty
from t
group by equip, unit
) eu;
Here是Rextester的一个例子。
您也可以在from
中没有子查询的情况下执行此操作,假设最大值不重复:
select sum(qty)
from t
where qty = (select max(t2.qty) from t t2 where t2.equip = t.equip and t2.unit = t.unit);
答案 1 :(得分:0)
尝试此查询 -
;WITH CTE
AS (
SELECT Equipment
,Unit
,Quantity
,Row_Number() OVER (
PARTITION BY Equipment
,Unit ORDER BY Quantity DESC
) AS RowNum
FROM SampleTable
)
SELECT Sum(Quantity) AS Total
FROM CTE
WHERE RowNum = 1;
答案 2 :(得分:0)
- 从以下脚本创建表格
create table eqip(equip varchar(3), unit int, qty int);
- 插入记录以供查询以进行测试
insert into eqip
values('a' , 01 , 2),
('a', 01 , 3 ) ,
('a' , 09 , 14),
('b' , 01 , 5),
('b' , 09 , 28)
- 运行以下查询以获取结果。其中Row_Number按单位和数量获得PARTITION。
select sum(qty) as total_quantity from(
select Row_Number() OVER (PARTITION BY equip,unit ORDER BY qty DESC) AS row_num, equip, unit, qty from eqip
) as A where row_num=1;