Oracle sql 连接计数给我错误 00904。00000 - “%s:无效标识符

Oracle sql count of join gives me error of 00904. 00000 - "%s: invalid identifier

这是我的查询,它试图获取在 CUSTOMERS table 中列出的 CUSTOMER_IDs 也已经在 TRANSACTIONS table 中。

SELECT
    DISTINCT COUNT(*)
FROM
    (
        SELECT
            CUSTOMERS.CUSTOMER_ID
        FROM
            CUSTOMERS
        INNER JOIN TRANSACTIONS 
        ON CUSTOMERS.CUSTOMER_ID = TRANSACTIONS.CUSTOMER_ID
    )

这个查询returns

  1. 00000 - "%s: invalid identifier error.

我该如何修正我的查询?

A count(*) 将始终 return 一个数字,因此不需要对其进行 distinct。听起来你想要的更像是:

SELECT COUNT( DISTINCT CUSTOMERS.CUSTOMER_ID )
  FROM CUSTOMERS
 INNER JOIN TRANSACTIONS 
         ON CUSTOMERS.CUSTOMER_ID = TRANSACTIONS.CUSTOMER_ID

假设transactions中的customer_id只能是一个有效的customers.customer_id,那么你可以非常简化这个:

SELECT COUNT(DISTINCT T.CUSTOMER_ID)
FROM TRANSACTIONS T;

这是一个非常合理的假设。在结构正确的数据库中,TRANSACTIONS.CUSTOMER_ID 将被声明为 CUSTOMERS.CUSTOMER_ID.

的外键