2016-05-23 1 views
-1

Привет, у меня есть стол, как показано ниже.Как переключить строки в столбцы и столбцы на строки в SQL Server?

Stat      Points TeamA TeamB  Date 
Highest Total    248  5  387  2016-05-14 
Lowest Total    153  2  5  2016-05-11 
Highest Successful Chase 195  5  386  2016-05-07 
Lowest Score Defended  211  5  4  2016-05-18 

Я хочу, чтобы результат, как,

 Highest Total Lowest Total Highest Chase Low Defended 
    A  248    153    195    211  
    B  5    2    5    5 
    C  384    5    386    4 
    D  2016-05-14  2016-05-11  2016-05-07  2016-05-18 

Помоги мне, чтобы получить результат, я новее один для сервера SQL.

+0

Первая версия таблицы ужасна, второй чуть лучше ... Не могу понять, ни один из них ... – jarlh

+0

Первая строка первой таблицы имя столбца из его. – DineshDB

+2

Возможный дубликат [Простой способ транспонирования столбцов и строк в Sql?] (Http://stackoverflow.com/questions/13372276/simple-way-to-transpose-columns-and-rows-in-sql) – blackbishop

ответ

1

Отверстие и невинность, независимо от того, что это 'A', 'B', .. действительно означает. Он также показывает отливку различных типов на общий varchar(20). Вам может потребоваться различное исполнение в соответствии с вашими требованиями.

select rowType, 
    max(case ut.stat when 'Highest Total' then value end) as [Highest Total], 
    max(case ut.stat when 'Lowest Total' then value end) as [Lowest Total], 
    max(case ut.stat when 'Highest Chase' then value end) as [Highest Chase], 
    max(case ut.stat when 'Lowest Score Defended' then value end) as [Lowest Defended] 
from t 
cross apply (
    select * 
    from (
     values 
     ('A', cast(points as varchar(20)), stat), 
     ('B', cast(TeamA as varchar(20)), stat),   
     ('C', cast(TeamB as varchar(20)), stat), 
     ('D', cast(Date as varchar(20)), stat) 
    ) ut(rowType, value, stat))ut 
group by rowType 
+0

Спасибо за ответ @Serg. Но у него есть некоторая проблема с вариантами типа и даты типа datatype. Но мне это очень помогает. – DineshDB

+0

Обновлен второй запрос для показа кастинга. – Serg

+0

Работает Хорошо, но порядок изменен. Как я могу получить его с тем же заказом, который я хочу. – DineshDB

 Смежные вопросы

  • Нет связанных вопросов^_^