好的,我需要帮忙。我通常很擅长SQL查询,但这个让我感到困惑。顺便说一下,这不是一项作业任务,而是Access数据库中的真实情况,下面是我自己编写的要求。
这是我的表格布局。如果有影响的话,它是在Access 2007中创建的;我正在使用SQL编写查询。
Id (primary key)
PersonID (foreign key)
EventDate
NumberOfCredits
SuperCredits (boolean)
人们会去参加各种活动,他们可以在某个活动中获得普通积分或超级积分,或者两者都有。如果某一行表示在该活动中获得的超级积分数量,则SuperCredits列为true,否则表示该行代表的是普通积分。
例如,如果有一个活动,174号参与,并在该活动中获得了3个普通积分和1个超级积分,则以下两行将添加到表中:
ID PersonID EventDate NumberOfCredits SuperCredits
1 174 1/1/2010 3 false
2 174 1/1/2010 1 true
有可能该人在活动中做了两件不同的事情,因此一个活动可能会有多于两列,可能会像这样:
ID PersonID EventDate NumberOfCredits SuperCredits
1 174 1/1/2010 1 false
2 174 1/1/2010 2 false
3 174 1/1/2010 1 true
现在我们想要打印一份报告。以下是报告的列:
PersonID
LastEventDate
NumberOfNormalCredits
NumberOfSuperCredits
报告将每个人的信息放在一行中。该行将显示此人参加的最新事件以及该事件中获得的普通和超级积分。
我要求您编写或帮助我编写SQL查询,以选择数据并进行GROUP BY和SUM()等操作。如果出于某种原因无法实现,请告诉我如何组织我的数据以使其成为可能。
这非常令人困惑,如果您不想费心解决它,我理解。我已尽力简化它,但如果您尝试并需要澄清,请随时提问。我将尝试弄清楚,但这超出了我的经验范围...