изменить формат данных со строк на столбцы - PullRequest
0 голосов
/ 10 июля 2020

У меня есть таблица SQL в формате ниже. Каждый идентификатор имеет 2 записи в таблице для определенной даты.

Input:
ID  date    rownum  subid   value1  value2
A   200911  1       X       10      20
A   200911  2       Y       15      25
B   201001  2       S       60      35
B   201001  1       R       40      50

Я хочу написать запрос SQL, чтобы изменить его на формат ниже, чтобы каждая комбинация идентификатора / даты имела только 1 запись как показано ниже. Rownum уже включен, и значения должны быть представлены так, чтобы сначала отображалось rownnum 1, а затем значение с rownum вторым, как показано ниже.

Вывод:

ID  date   row1subid row1value1 row1value2 row2subid row2value1 row2value2
A   200911 X         10         20         Y         15         25
B   201001 R         40         50         S         60         35

Сообщите мне, если что-то не понятно. Спасибо за вашу помощь!

1 Ответ

1 голос
/ 10 июля 2020

Вот что вам нужно сделать как SQL Fiddle .

И для справки:

CREATE TABLE TestData
    ([ID] varchar(1), 
     [date] int, 
     [rownum] int, 
     [subid] varchar(1), 
     [value1] int, 
     [value2] int)
;
    
INSERT INTO TestData
    ([ID], [date], [rownum], [subid], [value1], [value2])
VALUES
    ('A', 200911, 1, 'X', 10, 20),
    ('A', 200911, 2, 'Y', 15, 25),
    ('B', 201001, 2, 'S', 60, 35),
    ('B', 201001, 1, 'R', 40, 50)
;


SELECT A.ID, A.date, A.rownum, A.subid, A.value1, A.value2, B.value1 AS r2value1, B.value2 AS r2value2
FROM TestData AS A
     INNER JOIN TestData B ON A.id = B.id AND B.rownum = 2
WHERE A.rownum = 1
...