我有一个这样的表(Table1),并且想要创建一个带有查询的新表,该查询为每个字段创建一个新的“ID”(表2)。你会怎么用SQL来解决这个问题?我希望这是一个非常简单的问题。
表1:
SetID Structure Day1 Day2 Day3
1 A 10 15 20
2 B 7 12 17
表2:
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 :(得分:0)
您可以使用AUTO_INCREMENT属性设置表2的ID字段的属性。 SQL将在添加行时自动递增。
答案 1 :(得分:0)
编辑 - 刚看到ms-access标记,这可能在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