Sql查询以显示在表中多次出现的记录
我有两个表,Sql查询以显示在表中多次出现的记录,sql,sql-server,Sql,Sql Server,我有两个表,Customer列有CustomerID、FirstName、Address和PurchaseID、Qty、CustomersID列 我想创建一个查询,显示购买了两个以上产品的名字,产品数量由数量表示 我似乎无法理解这一点——我刚刚开始使用t-SQL,您可以计算购买金额并使用having子句筛选您感兴趣的项目。然后,您可以使用中的操作符仅查询符合这些ID的客户名称: SELECT FirstName FROM Customer WHERE CustomerID IN (SELE
Customer
列有CustomerID、FirstName、Address
和PurchaseID、Qty、CustomersID
列
我想创建一个查询,显示购买了两个以上产品的名字,产品数量由数量表示
我似乎无法理解这一点——我刚刚开始使用t-SQL,您可以计算购买金额并使用
having
子句筛选您感兴趣的项目。然后,您可以使用中的操作符仅查询符合这些ID的客户名称:
SELECT FirstName
FROM Customer
WHERE CustomerID IN (SELECT CustomerID
FROM Purchases
GROUP BY CustomerID
HAVING SUM(Qty) > 2)
您可以对购买的物品进行合计,并使用having
子句筛选您感兴趣的物品。然后,您可以使用
中的操作符仅查询符合这些ID的客户名称:
SELECT FirstName
FROM Customer
WHERE CustomerID IN (SELECT CustomerID
FROM Purchases
GROUP BY CustomerID
HAVING SUM(Qty) > 2)
请试试这个:
select c.FirstName,p.Qty
from Customer as c
join Purchase as p
on c.CustomerID = p.CustomerID
where CustomerID in (select CustomerID from Purchases group by CustomerID having count(CustomerID)>2);
请试试这个:
select c.FirstName,p.Qty
from Customer as c
join Purchase as p
on c.CustomerID = p.CustomerID
where CustomerID in (select CustomerID from Purchases group by CustomerID having count(CustomerID)>2);
请试试这个,根据你的问题,它应该适合你
请试试这个,根据你的问题,它应该适合你
虽然IN建议会起作用,但它们有点矫枉过正,而且很可能比直接加入聚合的性能要差。诀窍是HAVING子句,通过使用它,您可以将结果限制为所需的名称。这里有一个链接,可以了解有关IN vs.Exists vs.JOIN()的更多信息
有几十种方法可以做到这一点,并向您介绍窗口函数和常用表表达式,对于这个简化的示例来说,这些方法已经过时了,但在您的工具集中非常有用,因为您的查询将继续变得更加复杂:
;WITH cte AS (
SELECT DISTINCT
c.FirstName
,SUM(p.Qty) OVER (PARTITION BY c.CustomerId) as SumOfQty
FROM
Customer c
INNER JOIN Purchases p
ON c.CustomerId = p.CustomerId
)
SELECT *
FROM
cte
WHERE
SumOfQty > 2
虽然IN建议会起作用,但它们有点矫枉过正,而且很可能比直接加入聚合的性能要差。诀窍是HAVING子句,通过使用它,您可以将结果限制为所需的名称。这里有一个链接,可以了解有关IN vs.Exists vs.JOIN()的更多信息
有几十种方法可以做到这一点,并向您介绍窗口函数和常用表表达式,对于这个简化的示例来说,这些方法已经过时了,但在您的工具集中非常有用,因为您的查询将继续变得更加复杂:
;WITH cte AS (
SELECT DISTINCT
c.FirstName
,SUM(p.Qty) OVER (PARTITION BY c.CustomerId) as SumOfQty
FROM
Customer c
INNER JOIN Purchases p
ON c.CustomerId = p.CustomerId
)
SELECT *
FROM
cte
WHERE
SumOfQty > 2
如果你刚刚开始,你应该编辑问题并展示一些尝试。如果你刚刚开始,你应该编辑问题并展示一些尝试。我通常喜欢重复数据的这种机制,但因为名字只是重复的,你已经在一组一组地做了。我通常喜欢重复数据的这种机制,但因为名字只是重复的,你已经在一组一组地做了信息技术