Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中将部分行转换为单独的列_Sql_Sql Server 2008 - Fatal编程技术网

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

在SQL Server中将部分行转换为单独的列,sql,sql-server-2008,Sql,Sql Server 2008,我不确定Pivot是否是解决这个问题的方法,但我希望参与一行并用它创建一个新列 这是我的例子: +--------+------------+--------+ | Person | PetName | PetAge | +--------+------------+--------+ | 1 | Apple | 2 | | 1 | Banana | 6 | | 1 | Grapefruit | 3 | |

我不确定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 |            |        |
+--------+---------+--------+---------+--------+------------+--------+

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

更新:我刚刚注意到您的表的第一行有一个人

我也做过类似的事情。我所做的是在数据中添加一个行数(按人划分)。这将允许对数据进行分解,并为每个宠物每人提供一个数字顺序

只需使用PetName和PetAge即可制作普通桌子

添加一个只有一列和一行的Tablix,并将上一个表放在其中

对于列分组,使用ROW_NUM.作为ROW use Person


您如何决定列中的顺序?有多少列的限制吗?这不仅仅是一个简单的轴心。对列数的限制将是每人宠物的最大数量。因此,如果有人有21个PET,PetName/PetAge列的数量将是21,总共43列。我认为在这种情况下,您必须使用循环和动态sql。这不是T-sql示例,在reporting services中是可能的,但在T-sql中,游标将有助于您-抱歉。我以为是SSRS的原因。