Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
聚合SQL中两列中具有相同值的计数行_Sql_Sql Server_Join - Fatal编程技术网

聚合SQL中两列中具有相同值的计数行

聚合SQL中两列中具有相同值的计数行,sql,sql-server,join,Sql,Sql Server,Join,我对SQL非常陌生,正在为一个稍微高级一点的查询而挣扎。我的查询返回一个排序表,如下所示: 更新的查询: 我错误地发布了错误的查询。下面是正确的、类似的查询 SELECT distinct T.AidId ,A.FirstName ,A.LastName ,T.EventName, FROM AidsDB.dbo.AidsInfo A JOIN AidsDB.dbo.TextsInfo T ON A.AidId = T.AidId 我需要做的是查找表中有多少行具有匹配值Aide

我对SQL非常陌生,正在为一个稍微高级一点的查询而挣扎。我的查询返回一个排序表,如下所示:

更新的查询: 我错误地发布了错误的查询。下面是正确的、类似的查询

SELECT distinct T.AidId  ,A.FirstName  ,A.LastName  ,T.EventName,  
FROM AidsDB.dbo.AidsInfo A  
JOIN AidsDB.dbo.TextsInfo T 
ON A.AidId = T.AidId
我需要做的是查找表中有多少行具有匹配值
AideId
EventName
,并在新列中返回数字以显示给用户。查询结果被绑定到一个
WebDataGrid
,我最终将处理大量数据

除此之外,我发现以下信息来源很有帮助,但似乎无法使其发挥作用。此问题涉及在单独查询中计算行数:

下面显示了如何添加列:

是否有任何方法可以将这些数据组合起来,以返回一个包含所需数据的表?可能是这样的:

SELECT (Count(*) Where EventName = EventName and AidId AidId) as Responses,
        [TextTime], 
        [TextSender], 
        [TextContents], 
        [AidID], 
        [EventName] 
FROM [TextsInfo] ORDER BY [TextTime] DESC
这有什么意义吗

感谢您的帮助。提前谢谢

更新#1: 我的数据如下所示:

Mesages表格: 员工信息表: 我在寻找的回应: count列将根据每个Emloye拥有的特定事件的消息数量添加。如果他们有不止一个,这意味着他们已经做出了回应。否则他们就没有

更新#2 对于任何感兴趣的人,这是我基于@M02答案的工作查询:

select distinct T.AidId  ,A.FirstName  ,A.LastName  ,T.EventName,
count(T.EventName + T.AidID) over(partition by T.EventName, T.AidID) cnt
from AidsDB.dbo.AidsInfo A  join  AidsDB.dbo.TextsInfo T on A.AidId = T.AidId

您可以通过查询联接来自group的结果,并获得如下结果:

SELECT t.A,t.B,C,D,E,F,t1.cnt FROM the_table t
JOIN (SELECT A,B,COUNT(*) cnt FROM the_table GROUP BY A,B) t1
ON t.A = t1.A
AND t.B = t1.B
下面是使用聚合函数执行此操作的另一种方法:

SELECT A,B,C,D,E,F, 
  count(a + b) over(partition by a,b) cnt
FROM the_table t
您可以在此处看到这两种方法的演示:

请添加您拥有的数据样本和您想要的输出。您的最终查询是有意义的。谢谢!!这很有效。我目前正在使用方法二。我的查询有一个连接方法(参见更新的帖子),在我的例子中,使用嵌套查询和聚合方法之间有性能差异吗?谢谢
AidID   FirstName       LastName
12345   John            Doe
98765   Mike            Smith
AidID   FirstName       LastName    EventName   Count
98765   Mike Smith      Smith       event1      1
12345   John            Doe         event1      2
select distinct T.AidId  ,A.FirstName  ,A.LastName  ,T.EventName,
count(T.EventName + T.AidID) over(partition by T.EventName, T.AidID) cnt
from AidsDB.dbo.AidsInfo A  join  AidsDB.dbo.TextsInfo T on A.AidId = T.AidId
SELECT t.A,t.B,C,D,E,F,t1.cnt FROM the_table t
JOIN (SELECT A,B,COUNT(*) cnt FROM the_table GROUP BY A,B) t1
ON t.A = t1.A
AND t.B = t1.B
SELECT A,B,C,D,E,F, 
  count(a + b) over(partition by a,b) cnt
FROM the_table t