我有两张这样的表
会员及其购买
我需要像这样的输出
Member_ID | CountofProducts
(产品价值不应为0且购买状态= 1)
SELECT
MemberName,
(SELECT COUNT(*) AS Count
FROM dbo.Purchases
WHERE MemberName = dbo.Members.MemberName
AND Res_Status = 1) AS Count
FROM
dbo.Members
我可以从上述查询中获得他们的总CountofPurchased Products
,但我需要避免他们count=0
如何做到这一点?
答案 0 :(得分:4)
您可以尝试类似
的内容SELECT m.MemberName,
COUNT(p.*) Cnt
FROM Members m INNER JOIN
Purchases p ON m.MemberName = p.MemberName
WHERE p.Res_Status = 1
GROUP BY m.MemberName
不需要HAVING
子句,因为INNER JOIN
将排除没有购买的会员中的所有条目。
答案 1 :(得分:1)
SELECT m.MemberName, COUNT(p.*) AS CountOfProducts
FROM Members m
INNER JOIN Purchases p ON m.MemberName = p.MemberName
WHERE p.Res_Status = 1
GROUP BY m.MemberName
HAVING COUNT(p.*) > 0
我认为以上会有所作为。关键是您可能甚至不需要子查询,而是只使用连接就可以处理查询(可能效率更高)。