Выберите Вставить как отключить и развернуть - PullRequest
0 голосов
/ 29 апреля 2019

Таблица-1:

kode  | 101  | 102 | 103   | 104
=================================
1234  | 100  | 200 | 300   | 400
4555  | 1200 | 130 | 14500 | 1550
5012  | 100  | 150 | 350   | 440

Таблица-2:

kode  | field1 | field2
=======================
1234  | 101    | 100
1234  | 102    | 200
1234  | 103    | 300
1234  | 104    | 400
4555  | 101    | 1200
4555  | 102    | 130
4555  | 103    | 14500
4555  | 104    | 1550
5012  | 101    | 100
5012  | 102    | 150
5012  | 103    | 350
5012  | 104    | 440

У меня есть данные в table-1, как вставить данные из table-1 в table-2 с использованием SQL-запроса, например, unpivot, чтобы изменить динамику с помощью set @ cols

1 Ответ

1 голос
/ 29 апреля 2019

Вы можете использовать UNPIVOT для создания нужного набора данных.Допустим, ваши таблицы выглядят так:

create table table1 (
    kode int,
    [101] int,
    [102] int,
    [103] int,
    [104] int
);

insert into table1 values
(1234  , 100  , 200 , 300   , 400),
(4555  , 1200 , 130 , 14500 , 1550),
(5012  , 100  , 150 , 350   , 440);

Ваш запрос будет выглядеть следующим образом

SELECT kode, field1, field2
FROM table1
UNPIVOT 
(
  field2 FOR field1 IN ([101], [102], [103], [104])
) AS up;

Это даст вам желаемый результат.

Давайте создадим новую таблицу, подобную этой

create table table2 (
    kode int,
    field1 int,
    field2 int
);

Заполните UNPIVOT-данные в таблицу2

insert into table2
SELECT kode, field1, field2
FROM table1
UNPIVOT 
(
  field2 FOR field1 IN ([101], [102], [103], [104])
) AS up;

select * from table2;

Пример:https://rextester.com/YPWG93602

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...