Как изменить имя строки на имя столбца в SQL Server 2008r2 - PullRequest
0 голосов
/ 22 октября 2018

У меня проблема с созданием линейной диаграммы XtraCharts (XY Diagram) в asp.net с использованием хранимой процедуры в качестве привязки.

Я хочу сделать X значением R250, R500, R1000, R2000 строки и значение Y - это данные, которые уже сохранены в каждой строке выше.

У меня есть такая исходная таблица:

========================================================
No | Sequence No | ItemId | R250 | R500 | R1000 | R2000
========================================================
1    001           118       23     13     14      24

Я хочучтобы отобразить его в

========================================================
No | Sequence No | ItemID | Value | NameX
========================================================
1    001            118      23     R250
1    001            118      13     R500
1    001            118      14     R1000
1    001            118      24     R2000

Есть ли какой-нибудь возможный запрос для достижения этого ??Большое вам спасибо ..

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Все, что вам нужно, это просто UNPIVOT ( полезная статья ).

Попробуйте следующий код:

declare @tbl table (No int, SequenceNo varchar(3), ItemId int, R250 int, R500 int, R1000 int, R2000 int);
insert into @tbl values (1,'001', 118, 23, 13, 14, 24);

select * from (
    select * from @tbl
) p unpivot (
    [Value] for NameX in (R250, R500, R1000, R2000)
) as up;
0 голосов
/ 22 октября 2018

Вы можете использовать apply специально для этого:

select t.No, t.[Sequence No], t.ItemID, tt.*
from table t cross apply
     ( values ([R250], 'R250'),
              ([R500], 'R500'),
              ([R1000],'R1000'),
              ([R2000],'R2000')
     ) tt (Value, NameX);
...