SQL查询设计实例

时间:2015-04-27 20:11:20

标签: sql ms-access

我有一个这样的表(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

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