我有2张桌子。一个表包含一个Customer_ID, Product_Code, and Price_Paid
。
表2是包含Product_Code
的特定于特定类型产品的单列。
表1中有成千上万个product_code,但表2中只有约500个。
我想编写一个查询,仅在表2中存在Product_Code时才向我返回每个客户的Price_Paid总额。
我是否需要在子查询中执行此操作,或者在累加之前是否可以使用CASE语句在表2中的产品代码中搜索表1中的匹配项。
谢谢
答案 0 :(得分:1)
@Eric Brandt的answer没问题,但它依靠Product_Code
在产品表中是唯一的。更通用的解决方案是使用EXISTS
。我认为您可能需要按产品求和,而不仅仅是客户?
SELECT
Customer_ID, Product_Code
SUM(Price_Paid) AS SumOfPrice
FROM
Table1 as t1
WHERE EXISTS (
select 1 from Table2
where Product_Code = t1.Product_Code
)
GROUP BY
Customer_ID, Product_Code;
答案 1 :(得分:0)
[T]仅当表2中存在产品代码时,每个客户的价格总和。
除非我缺少任何内容,否则只是INNER JOIN
。
SELECT
Customer_ID,
SUM(Price_Paid) AS SumOfPrice
FROM
Table1 as t1
INNER JOIN
Table2 as t2
ON t2.Product_Code = t1.Product_Code
GROUP BY
Customer_ID;