2015-04-27 4 views
1

У меня есть таблица, подобная этой (таблица1), и мне хотелось создать новую таблицу с запросом, который создает новый «идентификатор» для каждого поля (Таблица 2). Как бы вы это сделали с SQL? Надеюсь, это довольно простой вопрос.Пример запроса SQL-запроса

Table1:

SetID Structure Day1 Day2 Day3 
1   A   10  15  20 
2   B   7  12  17 

Table2:

NewID Structure Day Data SetID 
1   A  1  10  1 
2   A  2  15  1 
3   A  3  20  1 
4   B  1  7  2 
5   B  2  12  2 
6   B  3  17  2 

ответ

0

Вы можете установить свойство поля идентификатора таблицы 2 с атрибутом AUTO_INCREMENT. SQL будет автоматически увеличиваться по мере добавления строк.

0

Редактировать - просто увидел метку доступа ms, это, вероятно, не будет работать в Access. Я оставлю это здесь на всякий случай, если это поможет, хотя

Попробуйте что-то вроде этого - с помощью ROW_NUMBER, чтобы newID и UNPIVOT изменили ваши столбцы на строки. Если вы хотите изменить строковое значение Day1/2/3, которое было бы небольшим изменением, но на данный момент я только что назвал имена столбцов как

declare @tbl table (SetID INT NOT NULL, Structure VARCHAR(1) NOT NULL, Day1 INT NOT NULL, Day2 INT NOT NULL, Day3 INT NOT NULL); 

insert into @tbl VALUES (1, 'A', 10, 15, 20), (2, 'B', 7, 12, 17); 

select * From @tbl 

SELECT 
    ROW_NUMBER() OVER (ORDER BY up.Structure, up.[Day]) AS [NewID], 
    up.Structure, up.[Day], up.Data, up.SetID 
FROM @tbl t 
UNPIVOT (
    Data 
    FOR [Day] IN (Day1, Day2, Day3) 
) up 
Смежные вопросы