sql - 计算 SQL Server 查询中的唯一行

标签 sql sql-server tsql

我在计算 SQL Server 查询时遇到了一些问题。关系模型相当陈旧(看起来)并且至少可以说不是最优的。

我的查询是这样的:

SELECT 
    [RequestUsers].requestId, [Requests].name, [Requests].isBooked
FROM 
    [RequestUsers]
JOIN 
    [Requests] ON [RequestUsers].requestId = [Requests].id
WHERE 
    [RequestUsers].dateRequested >= '10-01-2013'
    AND [RequestUsers].dateRequested <= '10-16-2013'

这个查询给出了一个包含大量重复记录的结果,即:

id      name        isBooked
-----------------------------
1393    Request1       0
1393    Request1       0
1393    Request1       0    
1394    Request2       0
1394    Request2       0
1399    Request3       0
1399    Request3       0
1399    Request3       0
1399    Request3       0
1399    Request3       0

(这里省略了很多记录)

我的问题是:是否有任何方法可以修改上述查询以对重复记录进行分组并创建一个包含重复项数量的 requestCount 列?像这样:

id      name        isBooked     requestCount
---------------------------------------------
1393    Request1       0              3
1399    Request2       0              2
1393    Request3       0              5

? :-)

提前致谢!

最佳答案

SELECT [RequestUsers].requestId, 
       [Requests].name, 
       [Requests].isBooked,
       Count(*) AS requestCount
FROM   [RequestUsers]
       JOIN [Requests]
           ON [RequestUsers].requestId = [Requests].id
WHERE  [RequestUsers].dateRequested >= '10-01-2013'
       AND [RequestUsers].dateRequested <= '10-16-2013'
GROUP BY [RequestUsers].requestId, 
       [Requests].name, 
       [Requests].isBooked

关于sql - 计算 SQL Server 查询中的唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412493/

相关文章:

tsql - 无符号 64 位值与 NUMERIC(20,0) 的用户定义类型

asp.net - 将 varchar 转换为 int SQl server 2005

sql - 插入当前日期和时间

sql - 哪一个性能更好: Derived Tables or Temporary Tables

sql - 使用环境变量时出现 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER

sql - 合并两个表的内容而不重复内容

c# - 获取表中插入行的实时提要

sql - 索引 View 及其自己的 Azure 搜索索引器行版本

sql - Oracle - 更新连接 - 非键保留表

sql - 如何在 SQL Server 中将数据值捕获为 ^ (...) 的幂?