繁体   English   中英

TSQL-如何查找名称类似于表达式而另一个字段的计数大于1的行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM