SQL查询问题

Des*_*ond 2 sql sql-server

我有这个查询来显示

有2张桌子,我将从表格翻新中获得翻新的数量,而客户ID和名称来自表1,客户.

在此输入图像描述

SELECT c.[Customer-ID], c.name, COUNT(*)"Number of Renovation"
FROM CUSTOMER c, RENOVATION r
WHERE c.[Customer-ID] = r.[Customer-ID]
GROUP BY c.[Customer-ID], c.name
HAVING Count(*) in 
(SELECT COUNT(*) FROM RENOVATION GROUP BY [Customer-ID])
ORDER BY c.[customer-id]
Run Code Online (Sandbox Code Playgroud)

这不是我查询的正确方法,任何人都知道如何缩短查询?或其他方式吗?虽然它仍然找到答案.我顺便学习SQL服务器.

mar*_*c_s 5

好的,所以你想要客户和他们的装修 - 为什么不使用:

SELECT c.[Customer-ID], c.name, COUNT(*) AS 'Number of Renovations'
FROM dbo.CUSTOMER c
INNER JOIN dbo.RENOVATION r ON c.[Customer-ID] = r.[Customer-ID]
GROUP BY c.[Customer-ID], c.name
Run Code Online (Sandbox Code Playgroud)

我不太明白你要用HAVING COUNT(*) IN......查询的部分来实现什么......

如果您希望所有客户至少进行一次翻新 - 试试这个:

SELECT c.[Customer-ID], c.name, COUNT(*) AS 'Number of Renovations'
FROM dbo.CUSTOMER c
INNER JOIN dbo.RENOVATION r ON c.[Customer-ID] = r.[Customer-ID]
GROUP BY c.[Customer-ID], c.name
HAVING COUNT(*) > 0
Run Code Online (Sandbox Code Playgroud)