【发布时间】:2016-05-06 23:41:38
【问题描述】:
我对 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,我最终将处理大量数据。
除其他外,我发现以下资源很有帮助,但似乎无法使其发挥作用。这个问题解决了在单独的查询中计算行数:Count Rows with same values in two columns
SELECT A,
B,
COUNT(*)
FROM the-table
GROUP BY A,B
下面显示如何添加列:Add Column in SQL Query
SELECT 'Site1' AS SiteName,
t1.column1,
t1.column2
FROM the-table
有没有办法将这些组合起来以返回包含我想要的数据的单个表?可能是这样的:
SELECT (Count(*) Where EventName = EventName and AidId AidId) as Responses,
[TextTime],
[TextSender],
[TextContents],
[AidID],
[EventName]
FROM [TextsInfo] ORDER BY [TextTime] DESC
这有意义吗?
感谢任何帮助。提前致谢。
更新 #1:
我的数据如下所示:
消息表:
AidID TextContents TextSender TextTime EventName
12345 Msg1 company1 2016-05-04 15:37:40.1522000 event1
12345 Reply to Msg1 John Doe 2016-05-04 15:38:29.0000000 event1
98765 Msg1 company1 2016-05-04 16:37:04.8458000 event1
员工信息表:
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
计数列将根据每个员工拥有的特定事件的消息数量添加。如果他们有不止一个,这意味着他们已经做出了回应。否则他们没有。
更新 #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
【问题讨论】:
-
请添加您拥有的数据样本以及您想要的输出。
-
您的最终查询确实有意义。
标签: sql sql-server join