Сводные строки для столбца по группе в SQL Server - PullRequest
0 голосов
/ 15 ноября 2018

Я ищу код, который может транспонировать строку в столбец с помощью группы в SQL Server 2008.

Это мой стол:

Name   |  Stdy   |  Val
-------+---------+-------
Kunjan | Technic |  80
Kunjan | Sains   |  90
Kunjan | Sport   |  60
Shone  | Technic |  60
Shone  | Sains   |  80
Shone  | Sport   |  70
Peudd  | Technic |  85
Peudd  | Sains   |  75
Peudd  | Sport   |  90

То, что я хочу в конечном итоге отобразить, выглядит примерно так (для данных выше):

Stdy    | Kunjan | Shone | Peudd
--------+--------+-------+-------
Technic |  80    |  60   |  85
Sains   |  90    |  80   |  75
Sport   |  60    |  70   |  90

Любая помощь будет оценена.

Заранее спасибо.

1 Ответ

0 голосов
/ 15 ноября 2018

это можно сделать с помощью оператора PIVOT

select  *
from    yourtable
        pivot 
        (
            max(Val)
            for Name in ([Kunjan], [Shone], [Peudd])
        ) p

или условный CASE оператор. Есть много примеров, просто сделайте поиск по нему

РЕДАКТИРОВАТЬ: для динамического случая

declare @sql    nvarchar(max),
        @col    nvarchar(max)

select  @col    = isnull(@col + ',', '') + Name
from    yourtable
group by Name

print   @col 

select  @sql    = 
'
select  *
from    youtable
        pivot 
        (
            max(Val)
            for Name in (' + @col + ')
        ) p
'

print   @sql
exec    sp_executesql @sql
...