Sql server 在SQL Server中创建一个临时表,显示每年最重要的国家/地区

Sql server 在SQL Server中创建一个临时表,显示每年最重要的国家/地区,sql-server,Sql Server,我在SQL Server中有一个练习:我有两个表Country和Events Events表包含事件详细信息,包括事件发生的城市。表Events有一个外键CountryID(CountryID是表Country中的主键) 我需要创建一个临时表,显示每年最重要的国家 任何帮助都将不胜感激 谢谢虽然您的尝试并不遥远,但您需要先使用CTE来聚合数据。我假设数据的最终顺序很重要,因此我使用了第二个CTE,而不是带有领带的TOP 1,以获得最终结果: WITH CTE AS( SELECT YEA

我在SQL Server中有一个练习:我有两个表
Country
Events

Events
表包含事件详细信息,包括事件发生的城市。表
Events
有一个外键
CountryID
CountryID
是表
Country
中的主键)

我需要创建一个临时表,显示每年最重要的国家

任何帮助都将不胜感激


谢谢

虽然您的尝试并不遥远,但您需要先使用CTE来聚合数据。我假设数据的最终顺序很重要,因此我使用了第二个CTE,而不是带有领带的
TOP 1,以获得最终结果:

WITH CTE AS(
    SELECT YEAR(e.EventDate) AS YearOfEvent,
           c.CountryName,
           COUNT(e.CountryID) AS NumberOfEvents
FROM [dbo].[tblEvent] AS e
     INNER JOIN tblCountry AS c ON e.CountryID = c.CountryID
GROUP BY e.CountryId,
         c.CountryName,
         YEAR(e.EventDate)),
RNs AS(
    SELECT YearOfEvent,
           CountryName,
           NumberOfEvents,
           ROW_NUMBER() OVER (PARTITION BY YearOfEvent ORDER BY CTE.NumberOfEvents DESC) AS RN
    FROM CTE)
SELECT YearOfEvent,
       CountryName,
       NumberOfEvents
FROM RNs
WHERE RN = 1
ORDER BY RNs.YearOfEvent ASC;

到目前为止你试过什么?我建议看一下
groupby
COUNT
作为一个好的开始。这是我得到的最接近的“选择年份(e.EventDate)作为YearOfEvent,c.CountryName,COUNT(e.CountryID)作为[dbo]的NumberOfEvents.[tblEvent]e.CountryID=c.CountryID组按e.CountryID,c.CountryName,year(e.EventDate)按年排序(e.EventDate)asc“这是不对的,因为我在一个特定的年份有不止一个国家发布您在问题中的尝试,而不是在评论中。没有人会读到您的尝试。正确设置格式。非常感谢您的回复,但这只返回一条记录,当我要填充临时表时,所有行都将具有此值。我有1776年到2016年的ex时间戳。因此我需要每年的国家/地区。这就是我正在处理()我的坏@AlbiierGoxhaj遗漏了分区(为什么有样本数据很重要,因为我们可以测试)。现在修复。谢谢,它可以工作。很抱歉,下次欢迎@AlbiierGoxhaj,我会更准确。请记住,如果答案解决了问题,请将答案标记为解决方案,以便未来的读者不会认为它有帮助。此外,你也因此获得了声誉(这对新用户开始获得这些早期特权非常有帮助)。