R
R
Ruslan Samara2020-07-22 13:14:58
SQL Server
Ruslan Samara, 2020-07-22 13:14:58

How to make SQL query correctly?

Tell me how to redo the selection from the @actionsUsers table
SELECT * FROM @actionsUsers

Пользователь    Действие                ТипДействия
  Иванов              Изменил дату         1
  Петров              Добавил запись       4
  Соколов            Изменил описание  2
  Иванов              Изменил дату         1
  Соколов            Изменил заголовок 3
        Соколов            Изменил заголовок 3

Users did not repeat, the number of actions in the ActionType column, the description of the action in the header of the selection.
To make it look like this:
Пользователь    Добавил запись       Изменил дату     Изменил описание    Изменил заголовок</li>
             Иванов              0                                     2                              0                            0
             Петров              1                                    0                               0                             0
             Соколов            0                                    0                                1                             2

Answer the question

In order to leave comments, you need to log in

1 answer(s)
K
Konstantin Tsvetkov, 2020-07-22
@lkmrus

PIVOT requires that a list of "Actions" be defined beforehand.

DECLARE @actionsUsers TABLE ( Пользователь VARCHAR(100), Действие VARCHAR(100), ТипДействия INT )
INSERT @actionsUsers VALUES ( 'Иванов', 'Изменил дату', 1 ),
( 'Петров',  'Добавил запись',    4 ),
( 'Соколов', 'Изменил описание',  2 ),
( 'Иванов',  'Изменил дату',      1 ),
( 'Соколов', 'Изменил заголовок', 3 ),
( 'Соколов', 'Изменил заголовок', 3 )

SELECT [Пользователь], 
       [Добавил запись], [Изменил дату], [Изменил описание], [Изменил заголовок]
  FROM 
    ( SELECT [Пользователь], [Действие]
        FROM @actionsUsers ) AS AUC
  PIVOT ( COUNT([Действие]) FOR [Действие] 
    IN ([Добавил запись], [Изменил дату], [Изменил описание], [Изменил заголовок] )) AS PT
  ORDER BY [Пользователь]

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question