SQL查询问题

标签 sql sql-server

我有这个查询要显示

有 2 张表,我将从表 renovation 中获取装修编号,而 customer-id 和 name 来自表 1,customer。

enter image description here

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]

这不是我进行查询的正确方法,有人知道如何缩短查询吗?或其他方法吗?虽然它仍然找到答案。顺便说一句,我正在学习 SQL Server。

最佳答案

好的,所以您需要客户和他们的装修 - 为什么不直接使用:

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(*) 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

关于SQL查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152393/

相关文章:

mysql - 如何 LEFT JOIN 表,采用 SUM() 或使用 WHERE 子句返回 0?

sql - 使用表的字段值重命名 SQL 表的列

mysql - MYSQL中以列为行的表获取数据

sql - 想要从评论部分提取变量信息

sql - sql检查某列是否为空值

php - 如何使用触发器在 SQL 中递增?

sql - 有人知道自动将一堆测试(虚拟)数据转储到 sql 数据库中的程序吗?

sql-server - 如何将 ASP.NET MVC 数据库从 LocalDb 传输到 SQL Server?

c# - 什么时候将标志存储为位掩码比使用关联表更好?

sql - 在nodejs中,如何运行SQL查询以便在渲染页面之前准备好数据?