SQL Server查询:对2个表中的列求和

时间:2014-04-27 00:22:15

标签: sql sql-server

我有这3张桌子:

  • APPOINTMENT:APPT_TIME,CUST_ID,STY_ID,SERVICE_ID,PROD_NUM
  • PRODUCT:PROD_NUM,PROD_TYPE,PROD_NAME,PROD_VENDOR,PRICE
  • SERVICE_:SERVICE_ID,SERVICE_DESC,EST_TIME,PRICE

我需要做的是为PRICE表中的PRODUCT和每个约会/客户的PRICE表中的SERVICE_求和。

以下是结果需要:

CUST_ID    final_price
------------
1234       45.16
4678       63.25
4587       78.58
7894       25.15

2 个答案:

答案 0 :(得分:1)

假设prod_numservice_id是各自表中的唯一键(或主键),则无需进行聚合。要完成此操作,您应该使用left outer join,以防某些约会没有这两个字段:

select a.cust_id,
       (coalesce(p.price, 0) + coalesce(s.price, 0)) as Final_Price
from appointment a left outer join
     product p
     on p.prod_num = a.prod_num left outer join
     service s
     on s.service_id = a.service_id;

如果给定产品或服务的引用表中可能有多行,那么您应该在加入之前进行聚合。

答案 1 :(得分:0)

SELECT   A.CUST_ID 
       , SUM(ISNULL(P.PRICE,0) + ISNULL(S.PRICE,0)) Final_Price
FROM APPOINTMENT A 
INNER JOIN PRODUCT P   ON A.PROD_NUM = P.PROD_NUM
INNER JOIN SERVICE S   ON S.SERVICE_ID = A.SERVICE_ID
GROUP BY A.CUST_ID