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