SQL 服务器:AdventureWorks 需要帮助! Select 订单日期为
SQL Server : AdventureWorks Need HELP! Select Customers where order date is
我正在使用 AdventureWorks2017
数据库。
我需要 select customerID
、year
和 ordersQTY
对于在 2011 年和 2014 年订购但不是在 2012 年或 2013 年订购的客户。
我尝试用 where 子句对其进行编码,但它似乎无法正常工作...
WITH SalesQTY AS
(
SELECT
CustomerID, YEAR(OrderDate) Y
FROM
Sales.SalesOrderHeader oh
WHERE
YEAR(OrderDate) IN (2011, 2014)
)
SELECT CustomerID, Y, COUNT(Y)
FROM SalesQTY s
GROUP BY CustomerID, Y;
您可以使用 not exists
来执行此操作。
SELECT CustomerID, YEAR(OrderDate),COUNT(*)
FROM Sales.SalesOrderHeader oh
WHERE YEAR(OrderDate) IN (2011, 2014)
AND NOT EXISTS (SELECT 1
FROM Sales.SalesOrderHeader oh1
WHERE oh.CustomerID=oh1.CustomerID
AND YEAR(oh1.OrderDate) IN (2012, 2013)
)
GROUP BY CustomerID, YEAR(OrderDate)
HAVING COUNT(DISTINCT YEAR(OrderDate)) = 2
我正在使用 AdventureWorks2017
数据库。
我需要 select customerID
、year
和 ordersQTY
对于在 2011 年和 2014 年订购但不是在 2012 年或 2013 年订购的客户。
我尝试用 where 子句对其进行编码,但它似乎无法正常工作...
WITH SalesQTY AS
(
SELECT
CustomerID, YEAR(OrderDate) Y
FROM
Sales.SalesOrderHeader oh
WHERE
YEAR(OrderDate) IN (2011, 2014)
)
SELECT CustomerID, Y, COUNT(Y)
FROM SalesQTY s
GROUP BY CustomerID, Y;
您可以使用 not exists
来执行此操作。
SELECT CustomerID, YEAR(OrderDate),COUNT(*)
FROM Sales.SalesOrderHeader oh
WHERE YEAR(OrderDate) IN (2011, 2014)
AND NOT EXISTS (SELECT 1
FROM Sales.SalesOrderHeader oh1
WHERE oh.CustomerID=oh1.CustomerID
AND YEAR(oh1.OrderDate) IN (2012, 2013)
)
GROUP BY CustomerID, YEAR(OrderDate)
HAVING COUNT(DISTINCT YEAR(OrderDate)) = 2