T-SQL : Pivot table 没有聚合

T-SQL : Pivot table without aggregate

我想了解如何在 T-SQL 中旋转数据,但似乎无法正常工作。我有以下 table 结构

+-------------------+-----------------------+
|       Name        |         Value         |
+-------------------+-----------------------+
| TaskId            | 12417                 |
| TaskUid           | XX00044497            |
| TaskDefId         | 23                    |
| TaskStatusId      | 4                     |
| Notes             |                       |
| TaskActivityIndex | 0                     |
| ModifiedBy        | Orange                |
| Modified          | /Date(1554540200000)/ |
| CreatedBy         | Apple                 |
| Created           | /Date(2121212100000)/ |
| TaskPriorityId    | 40                    |
| OId               | 2                     |
+-------------------+-----------------------+

我想将名称列转换为预期输出的列

+--------+------------------------+-----------+--------------+-------+-------------------+------------+-----------------------+-----------+-----------------------+----------------+-----+
| TASKID |        TASKUID         | TASKDEFID | TASKSTATUSID | NOTES | TASKACTIVITYINDEX | MODIFIEDBY |       MODIFIED        | CREATEDBY |        CREATED        | TASKPRIORITYID | OID |
+--------+------------------------+-----------+--------------+-------+-------------------+------------+-----------------------+-----------+-----------------------+----------------+-----+
|        |                        |           |              |       |                   |            |                       |           |                       |                |     |
| 12417  | XX00044497             | 23        | 4            |       | 0                 | Orange     | /Date(1554540200000)/ | Apple     | /Date(2121212100000)/ | 40             | 2   |
+--------+------------------------+-----------+--------------+-------+-------------------+------------+-----------------------+-----------+-----------------------+----------------+-----+

有简单的方法吗?列是固定的(不是动态的)。

感谢任何帮助

试试这个:

select * from yourtable
pivot
(
 min(value)
 for Name in ([TaskID],[TaskUID],[TaskDefID]......)
) as pivotable

您还可以使用 case 语句。 您必须在数据透视 table.

中使用聚合函数

如果你想了解更多,这里是参考:

https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-2017

输出(我只试了三列):

DB<>Fiddle