Sql:只显示每行中已更改的数据

时间:2016-02-22 09:12:44

标签: sql sql-server report ms-access-2007

我想知道如何在Access(sql或reports)或SQL SERVER中获得如下结果?

--------------------------------------------------------------
| ID    |  Name  |  Job        |  Date        |  Hobby       |
--------------------------------------------------------------
| 1     |  Alex  |  carpenter  |  12/02/2006  |  basketball  |
| 1     |        |             |              |  baseball    |
| 2     |  Lara  |  dancer     |  06/07/2015  |  running     |
| 2     |        |             |              |  cooking     |
| 2     |        |             |              |  swimming    |
--------------------------------------------------------------

执行查询后的结果例如是:

--------------------------------------------------------------
| ID    |  Name  |  Job        |  Date        |  Hobby       |
--------------------------------------------------------------
| 1     |  Alex  |  carpenter  |  12/02/2006  |  basketball  |
| 1     |  Alex  |  carpenter  |  12/02/2006  |  baseball    |
| 2     |  Lara  |  dancer     |  06/07/2015  |  running     |
| 2     |  Lara  |  dancer     |  06/07/2015  |  cooking     |
| 2     |  Lara  |  dancer     |  06/07/2015  |  swimming    |
--------------------------------------------------------------

这里的想法是始终保持第一行不变,但具有相同ID的以下内容应仅包含ID和更改的数据,如上例所示。

这里的查询不是那么重要,因为我只想要特定的结果显示。

非常感谢!

1 个答案:

答案 0 :(得分:1)

根据您的问题,您似乎正在尝试删除“名称”,“作业”和“日期”字段的重复行,并仅显示每个组合中的第一行。

要完成此任务,您可以尝试以下方法:

  1. 将您的数据放在临时表中
  2. 应用partition by子句查找每个组合的Rank(名称,作业,日期字段),并将其添加为临时表中的附加列
  3. 更新临时表以消除排名值> 1的名称,作业,日期字段。 1,并选择您需要的列。这应该使你的表看起来像你提到的那样