T-SQL: сводная таблица без агрегата - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь понять, как сводить данные в T-SQL, но не могу заставить их работать. У меня есть следующая структура таблицы

+-------------------+-----------------------+
|       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   |
+--------+------------------------+-----------+--------------+-------+-------------------+------------+-----------------------+-----------+-----------------------+----------------+-----+

Есть ли простой способ сделать это? Столбцы фиксированные (не динамические).

Любая помощь приветствуется

1 Ответ

0 голосов
/ 10 апреля 2019

Попробуйте:

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

Вы также можете использовать операторы case .Вы должны использовать функцию агрегирования в сводной таблице.

Если вы хотите узнать больше, вот ссылка:

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

Вывод (я пробовал только тристолбцы):

DB <> Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...