Упорядочивать результат query в аккуратной Линии

У меня есть следующая консультация, которую я получаю с этим query:

Select Año, Tip, Est, t1, t2, t3 From Tabla1

Año     Tip Est Zo  t1  t2  t3  

2003    1   A   6   12  14  17  
2003    1   A   7   12  15  18  
2003    1   A   8   13  16  19  
2003    1   A   9   10  12  14  
2003    1   A   10  12  14  17  
2004    1   A   1   11  13  15  

Как я могу реализовывать query, чтобы иметь результат, похожий на это?

Año     Tip Est Zo  Ts 

2003    1   A   6   12
2003    1   A   6   14
2003    1   A   6   17
2003    1   A   7   12
2003    1   A   7   15
2003    1   A   7   18
2003    1   A   8   13
2003    1   A   8   16
2003    1   A   8   19
2003    1   A   9   10
2003    1   A   9   12
2003    1   A   9   14

То, что делается, состоит в том, чтобы размещать колонны t1, t2, t3 в линии с теми же годами, которым они принадлежат.

Как могло бы удаваться этому?

6
задан 23.10.2016, 04:11
3 ответа

SQL Server позволяет тебе делать один UNPIVOT , diseГ±ado именно для этой situaciГіn:

select año, tip, est, zo, ts
  from tabla1
unpivot (
  ts for columnas in (t1, t2, t3)
) as unpvt
 order by ... -- aquí le pones las columnas que necesitas para establecer el orden deseado

Другая opciГіn интересный - та использования CROSS APPLY:

select t.año, t.tip, t.est, t.zo, v.ts
  from tabla1 t
 cross apply (
   values (t.t1), (t.t2), (t.t3)
 ) as v(ts)
 order by ... -- aquí le pones las columnas que necesitas para establecer el orden deseado

В обоих случаях, результате deberГ, - чтобы быть хорошим, так как только нужно пробегать таблицу однажды.

6
ответ дан 24.11.2019, 12:58

Хотя я верю в то, что понимаю ты хочешь группировать это в единственной колонне, можешь делать это с одним union all

SELECT  *
FROM
    ((SELECT 
        Año, Tip, Est, Zo, t1
    FROM
        Tabla1) 
UNION ALL (SELECT 
        Año, Tip, Est, Zo, t2
    FROM
        Tabla1) 
UNION ALL (SELECT 
        Año, Tip, Est, Zo, t3
    FROM
        Tabla1)) tabla
ORDER BY Est;
3
ответ дан 24.11.2019, 12:58

Ты должен добавлять ORDER BY.

Тестирует следующую консультацию:

SELECT Año, Tip, Est, t1
FROM Tabla1
ORDER BY Zo
-2
ответ дан 24.11.2019, 12:58

Теги

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