尝试从查询中添加值的总和,但不知道如何在列表中找到唯一值时添加所有值,但是应该添加所有值。
例如 第11项的价格是1英镑 第35项的价格是2英镑
我试图增加11和35和35的值,即(£1 +£2 +£2)以获得5英镑的价值
我正在使用的查询明显不合适,因为它返回3英镑所以它只添加附加到唯一项目的唯一值
SELECT sum(price) FROM prices where item_id IN(11,35,35)
任何非常感谢的帮助
答案 0 :(得分:1)
您需要在表格上强制进行笛卡尔联接,您可以这样做:
select
sum(yt.price) as TotalPrice
from
yourTable yt
join (
select
11 as ID
from dual
union all
select
35 as ID
from dual
union all
select
35 as ID
from dual
) sel
on yt.ID=sel.ID
您创建一个子查询,该子查询具有所需ID的多个记录,并将其连接到要从中提取数据的实际表。
您可以做的另一件事就是撤回单个物品价格并在数组/对象中对其进行排序,您可以在其中进行数学计算以更详细的方式获取价格。
你可以用一个数组完成另一件事(或者你要存储你想要计算其价格的ID)将在外部查询中进行可变数量的联合 - 类似于什么是以上,但看起来会有很大不同:
select
sum(sel.price)
from
(
select price from yourTable where ID=11
union all
select price from yourTable where ID=35
union all
select price from yourTable where ID=35
) sel
它几乎相同,但根据您提入查询的其他列,可能更适合。
答案 1 :(得分:0)
您需要使用join
执行此操作。 where
子句不会增加行数。所以:
select sum(price)
from (select 11 as item union all select 35 union all select 35
) i join
prices p
on i.item = p.item;