Sql:只显示每行变化的数据

Sql: display just the changed data in each row

我想知道如何在 Access(sql 或报告)或 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 和更改的数据,如上例所示。

这里的查询不是很重要,因为我只是想有一个特定的结果显示。

非常感谢!

根据您的问题,您似乎正试图删除 'Name'、'Job' 和 'Date' 字段的重复行,并让它们仅显示在每个组合。

为此,您可以尝试以下操作:

  1. 将您的数据存储在临时文件中table
  2. 应用 partition by 子句查找每个组合(名称、工作、日期字段)的排名,并将其添加为临时 table
  3. 中的附加列
  4. 更新临时 table 以清空排名值 > 1 的姓名、工作、日期字段,以及 select 您需要的列。这应该使您的 table 看起来像您提到的