内连接的数量和总和

时间:2018-11-28 17:19:35

标签: count sum inner-join

我有两个链接在4个字段上的表 DP_STOP具有这4个字段以及一个客户ID DP_ORDER有这4个字段以及订单 客户(LOCATION_ID)在4条路线上,因为DP_STOP表中的路线在不同的路线上 客户针对这4条路线总共有7个订单 当我尝试计算订单总数时的客户数量时,计数是订单数量而不是止损数量

DP_STOP表

REGION | ROUTE_ID | ROUTE_DATE | INTERNAL_STOP | LOCATION_ID

11600-A| 202      | 2018-11-01 | 9             | 00001
11600-A| 202      | 2018-11-08 | 9             | 00001
11600-A| 202      | 2018-11-15 | 9             | 00001
11600-A| 202      | 2018-11-22 | 9             | 00001

DP_ORDER表

REGION | ROUTE_ID | ROUTE_DATE | INTERNAL_STOP | ORDER_NUMBER | PLANNED_SIZE1

11600-A| 202      | 2018-11-01   9             | 1A           | 5
11600-A| 202      | 2018-11-08   9             | 2B           | 5
11600-A| 202      | 2018-11-08   9             | 2C           | 5
11600-A| 202      | 2018-11-15   9             | 3A           | 5
11600-A| 202      | 2018-11-15   9             | 3B           | 5
11600-A| 202      | 2018-11-22   9             | 4A           | 5
11600-A| 202      | 2018-11-22   9             | 4B           | 5

当我尝试计算订单总和时的止损数量时,COUNT会通过以下查询来计算订单数量而不是止损数量:

SELECT  
COUNT (L.LOCATION_ID) AS DELIVERIES,
L.LOCATION_ID AS CUSTOMER_ID,
SUM (O.PLANNED_SIZE1) AS CASES
    FROM TSDBA.DP_STOP L
       INNER JOIN TSDBA.DP_ORDER O
       ON (O.REGION_ID=L.REGION_ID) 
       AND (O.ROUTE_DATE=L.ROUTE_DATE) 
       AND (O.ROUTE_ID=L.ROUTE_ID)
       AND (O.INTERNAL_STOP_ID=L.INTERNAL_STOP_ID)
  WHERE L.ROUTE_DATE BETWEEN '2018-11-01' AND '2018-11-28' 
  AND L.REGION_ID='11600-A'
    GROUP BY L.LOCATION_ID

我从查询中得到的结果是:

DELIVERIES | CUSTOMER_ID | PLANNED_SIZE1
7          | 00001       | 35

我希望它是

DELIVERIES | CUSTOMER_ID | PLANNED_SIZE1
4          | 00001       | 35

1 个答案:

答案 0 :(得分:0)

您应该通过表达式添加distinct,该表达式为此唯一定义了一行,即COUNT (distinct L.ROUTE_DATE)(在您的情况下)。