SQL Server: Примеры ВЕРТЯЩИХСЯ Строковых данных

Вместо IGNORE вы можете использовать ON DUPLICATE KEY UPDATE, которое даст вам контроль над тем, какие значения должны преобладать.

123
задан Martin Eden 1 February 2016 в 11:00
поделиться

3 ответа

Помните, что МАКС. агрегатная функция будет работать над текстом, а также числами. Этот запрос только потребует, чтобы таблица была просканирована однажды.

SELECT Action,
       MAX( CASE data WHEN 'View' THEN data ELSE '' END ) ViewCol, 
       MAX( CASE data WHEN 'Edit' THEN data ELSE '' END ) EditCol
 FROM t
 GROUP BY Action
164
ответ дан 24 November 2019 в 01:12
поделиться

Если Вы конкретно хотите использовать функцию ЦЕНТРА SQL Server, то это должно работать, предполагая, что Ваши два первоначальных столбца называют действием и cmd. (Не то, чтобы симпатичный для взгляда на все же.)

SELECT act AS 'Action', [View] as 'View', [Edit] as 'Edit'
FROM (
    SELECT act, cmd FROM data
) AS src
PIVOT (
    MAX(cmd) FOR cmd IN ([View], [Edit])
) AS pvt
52
ответ дан 24 November 2019 в 01:12
поделиться

Ну, для Вашего образца и любого с ограниченным количеством уникальных столбцов, это должно сделать это.

select 
    distinct a,
    (select distinct t2.b  from t t2  where t1.a=t2.a and t2.b='VIEW'),
    (select distinct t2.b from t t2  where t1.a=t2.a and t2.b='EDIT')
from t t1
6
ответ дан 24 November 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: