Как UNPIVOT разбить столбцы на строки - PullRequest
0 голосов
/ 13 февраля 2009

У меня есть SQL-запрос (с использованием MS-SQL 2005), который генерирует данные с этими столбцами:

TimeStamp | SpeedMax | SpeedMin | HeightMax | HeightMin
-------------------------------------------------------
10        | 50       | 10       | 300       | 70

Форма, в которой я нуждаюсь, это:

TimeStamp | Speed | Height
---------------------------
10        | 50    | 300          <-- one row for the max values 
10        | 10    | 70           <-- a second row for the min values

Учитывая первый набор результатов ... какой запрос мне понадобится, чтобы получить данные во второй формат? Я думаю, что это может привести к развороту, но я новичок в этом, и мне трудно понять, что написать.

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2009
SELECT TimeStamp,
       minmax,
       CASE WHEN minmax = 0 THEN SpeedMax ELSE SpeedMin END AS Speed
       CASE WHEN minmax = 0 THEN HeightMax ELSE HeightMin END AS Height
FROM Table,
(
    SELECT 0 AS minmax
    UNION ALL
    SELECT 1
) mm

Вы можете добавить

OPTION (FORCE ORDER)

чтобы избежать двойного сканирования на Table

1 голос
/ 13 февраля 2009

Попробуйте

SELECT TimeStamp, SpeedMax AS Speed, HeightMax AS Height
FROM Table
UNION ALL
SELECT TimeStamp, SpeedMin AS Speed, HeightMin AS Height
FROM Table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...