Sql 过去三年内订购过一次的客户

Sql 过去三年内订购过一次的客户,sql,Sql,我正在尝试检索过去三年中订购过一次的客户列表。我以为拥有COUNTINVOICE.INVOICE_NO=1可以让我达到目的,但我仍然从同一客户那里收到多张发票,所以我知道他们已经订购了不止一次。提前感谢您的帮助 SELECT COUNT(INVOICE.INVOICE_NO) AS "Number of Orders",INVOICE.INVOICE_NO, FIRST_ORDER_DT, LAST_ORDER_DT,(INVOICE.CUSTOMER_ID), ship_first_n

我正在尝试检索过去三年中订购过一次的客户列表。我以为拥有COUNTINVOICE.INVOICE_NO=1可以让我达到目的,但我仍然从同一客户那里收到多张发票,所以我知道他们已经订购了不止一次。提前感谢您的帮助

SELECT COUNT(INVOICE.INVOICE_NO) AS "Number of Orders",INVOICE.INVOICE_NO, FIRST_ORDER_DT, 
   LAST_ORDER_DT,(INVOICE.CUSTOMER_ID), ship_first_name, ship_last_name, SHIP_EMAIL
FROM INVOICE, INVOICE_DETAILS, CUSTOMER
WHERE INVOICE.INVOICE_NO = INVOICE_DETAILS.INVOICE_NO 
AND CUSTOMER.CUSTOMER_ID = INVOICE.CUSTOMER_ID
AND INVOICE.SHIP_EMAIL IS NOT NULL
AND ORDER_DT BETWEEN '2017-01-01' AND '2019-12-31'
AND (ITEM_NO like 'TD-%' 
OR ITEM_NO like 'TB-%'
OR ITEM_NO like 'TVD-%')
GROUP BY INVOICE.CUSTOMER_ID, INVOICE.INVOICE_NO, FIRST_ORDER_DT, LAST_ORDER_DT, ship_first_name, 
  ship_last_name, SHIP_EMAIL
HAVING COUNT(INVOICE.INVOICE_NO)=1
ORDER BY [LAST_ORDER_DT]DESC
您的小组成员导致了问题。只需选择有关单个客户的信息:

SELECT i.CUSTOMER_ID
FROM INVOICE i JOIN
     INVOICE_DETAILS id
     ON i.INVOICE_NO = id.INVOICE_NO JOIN
     CUSTOMER c
     ON i.CUSTOMER_ID = c.CUSTOMER_ID
WHERE i.SHIP_EMAIL IS NOT NULL AND
      ORDER_DT BETWEEN '2017-01-01' AND '2019-12-31' AND
      (ITEM_NO like 'TD-%' OR ITEM_NO like 'TB-%' OR ITEM_NO like 'TVD-%')
GROUP BY i.CUSTOMER_ID
HAVING COUNT(*) = 1;

我还修复了您的联接语法或其不足。

您不能按INVOICE.INVOICE\u NO分组,也不能在同一查询中使用HAVING COUNTINVOICE.INVOICE\u NO=1。尝试从GROUP BY子句中删除INVOICE.INVOICE_NO。我在第5行的客户c之前添加了一个联接,它起到了很好的作用。我显然是个新手,所以这很有帮助。非常感谢!