将部分行转换为SQL Server中的单独列

时间:2015-05-21 17:26:52

标签: sql sql-server-2008

我不确定Pivot是否可以采用这种方式,但我希望参与其中并使用它创建一个新列。

这是我的例子:

+--------+------------+--------+
| Person |  PetName   | PetAge |
+--------+------------+--------+
|      1 | Apple      |      2 |
|      1 | Banana     |      6 |
|      1 | Grapefruit |      3 |
|      2 | Red        |     53 |
|      2 | Blue       |      8 |
+--------+------------+--------+

这是我的结果/目标:

+--------+---------+--------+---------+--------+------------+--------+
| Person | PetName | PetAge | PetName | PetAge |  PetName   | PetAge |
+--------+---------+--------+---------+--------+------------+--------+
|      1 | Apple   |      2 | Banana  |      6 | Grapefruit |      3 |
|      2 | Red     |     53 | Blue    |      8 |            |        |
+--------+---------+--------+---------+--------+------------+--------+

如何从我的示例中获得结果?

1 个答案:

答案 0 :(得分:0)

更新:我刚注意到你的桌子在第一行中只有人。

我做过类似的事情。我所做的是每个宠物(OVER PARTITION BY PERSON)为数据添加 RowNumber 。这将允许数据被分解,并且每人每只宠物的数字顺序。

使用PetName和PetAge创建普通表。

添加一个只包含一列和一行的Tablix,并将上一个表放入其中。

对于列分组,请使用ROW_NUM。对于行使用人。

enter image description here