表2中存在值2时表1中的值1的总和

时间:2019-02-25 18:39:58

标签: sql snowflake-datawarehouse

我有2张桌子。一个表包含一个Customer_ID, Product_Code, and Price_Paid

表2是包含Product_Code的特定于特定类型产品的单列。

表1中有成千上万个product_code,但表2中只有约500个。

我想编写一个查询,仅在表2中存在Product_Code时才向我返回每个客户的Price_Paid总额。

我是否需要在子查询中执行此操作,或者在累加之前是否可以使用CASE语句在表2中的产品代码中搜索表1中的匹配项。

谢谢

2 个答案:

答案 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;