Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 基于另一列中的值将列透视到行_Sql_Sql Server - Fatal编程技术网

Sql 基于另一列中的值将列透视到行

Sql 基于另一列中的值将列透视到行,sql,sql-server,Sql,Sql Server,所以我有一个包含两个属性的表(见图)。现在我一直在尝试使用PIVOT来完成我的任务,但没有成功 我想要: SparePartListID=1的所有WorkOperationID在一行上 与第2行上的SparePartsListID=2对应的所有WorkOperationsID 这有可能实现吗 使用帮助或Row_Number()和一些动态SQL。这是假设您想要密集的列,否则请通过SparePartsListID删除分区(两个) 返回 SparePartsListID 1 2

所以我有一个包含两个属性的表(见图)。现在我一直在尝试使用PIVOT来完成我的任务,但没有成功

我想要:

  • SparePartListID=1的所有
    WorkOperationID
    在一行上
  • 与第2行上的
    SparePartsListID=2
    对应的所有
    WorkOperationsID
这有可能实现吗


使用帮助或Row_Number()和一些动态SQL。这是假设您想要密集的列,否则请通过SparePartsListID删除
分区(两个)

返回

SparePartsListID    1       2       3       4       ...
1                   101282  101344  101398  NULL    ...
2                   84108   84921   85528   86228   ...
编辑-如果您不想动态扩展[1]、[2]、[3]、[4]、…、[n]


SparePartsList=2比SparePartsList=1多添加所需输出的示例
SparePartsListID    1       2       3       4       ...
1                   101282  101344  101398  NULL    ...
2                   84108   84921   85528   86228   ...
Select *
From (
        Select *
              ,RN=Row_Number() over (Partition By SparePartsListID Order by WorkOperationID) 
         From  YourTable
     ) A
 Pivot (max(WorkOperationID) For [RN] in ([1],[2],[3],[4]) ) p