[英]TSQL - How can I find rows where the name is like an expression and another field has a count greater than 1?
我需要查找某个实例,其中某个客户有一个特定的名称,并且已经购买了1个以上的同一商品。
我以为会是下面的情况,但是我收到一条错误消息,指出聚合可能不会出现在where子句中。
我也尝试过HAVING
但是我不确定语法。
SELECT
cust.FirstName, cust.LastName, prod.ProductNumber, prod.Name
FROM
Ours.Customer as cust
INNER JOIN
Ours.SalesOrderMaster as som ON cust.CustomerID = som.CustomerID
INNER JOIN
Ours.SalesOrderDetail as sod ON som.SalesOrderID = sod.SalesOrderID
INNER JOIN
Ours.Product as prod ON sod.ProductID = prod.ProductID
WHERE
cust.FirstName LIKE 'Joe' AND Count(prod.ProductID) > 1;
您可以使用group by
子句对数据进行分组,然后使用having
子句过滤组。
除非我误解了您的问题,否则我认为这可能是您想要的:
SELECT cust.FirstName, cust.LastName, prod.ProductNumber, prod.Name
FROM Ours.Customer as cust
INNER JOIN Ours.SalesOrderMaster as som ON cust.CustomerID = som.CustomerID
INNER JOIN Ours.SalesOrderDetail as sod ON som.SalesOrderID = sod.SalesOrderID
INNER JOIN Ours.Product as prod ON sod.ProductID = prod.ProductID
WHERE cust.FirstName LIKE 'Joe'
GROUP BY cust.FirstName, cust.LastName, prod.ProductNumber, prod.Name
HAVING Count(prod.ProductID) > 1;
这将首先应用where子句以过滤掉所有具有FirstName的行,例如Joe,然后按名称和产品编号对行进行分组,并过滤出count> 1的那些组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.