SQL Pivot-запрос в одной строке

Вы можете использовать любой символ (UTF8) в имени поля, который не является особым (содержит «.» или начинается с «$»).

blockquote>

https://jira.mongodb.org/browse/SERVER-3229

https://stackoverflow.com/a/7976235/311220

Как правило, лучше придерживаться буквенных цифр в нижнем регистре с подчеркиванием.

1
задан marc_s 18 January 2019 в 05:12
поделиться

1 ответ

Вы можете попробовать следующий динамический сводный запрос.

create table temp
(
  PageId int,
  PageName Varchar(20),
  IsAccess int
)

insert into temp values (1,   'Dashboard1',  1), (2,   'Dashboard2',   0), (3,   'Dashboard3',  1)

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.PageName) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT ' + @cols + ' from 
            (
                select IsAccess, PageName
                from temp
           ) x
            pivot 
            (
                 max(IsAccess)
                for PageName in (' + @cols + ')
            ) p '

execute(@query)

Выходные данные, как показано ниже

Dashboard1  Dashboard2  Dashboard3
----------------------------------
1           0           1

Live Demo Here

0
ответ дан Suraj Kumar 18 January 2019 в 05:12
поделиться
Другие вопросы по тегам:

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