我使用MS SQL Server 2008 R2和我有一个成绩表,我想从另一个表属于数据来填充。
// Results table definition
create table resultsTable
(
RowId int Identity(1,1) Not Null,
sid1 int, colA1 int, colB1 int, colC1 int,
sid2 int, colA2 int, colB2 int, colC2 int,
sid3 int, colA3 int, colB3 int, colC3 int,
colX bit
)
// Source table definition
create table sourceTable
(
RowId int Identity(1,1) Not Null ,
colA int , colB int , colC int , colX bit ,
)
如果源表有超过100行数据,我希望能够选择使用类似3行
select top 3
colA,
colB,
colC,
colX
from sourceTable
where Rowid >= @RowIdVariable
其中@RowIdVariable值从另一个表的到来,RowsIdFrom
create table RowIdsFromTable
(
id int Identity(1,1) Not Null,
RowIdFrom int
)
我想用光标这一点。
declare MyCursor cursor for
select RowIdFrom from RowIdsFromTable order by RowIdFrom asc
Open MyCursor
我知道我的结果会是这个样子下面的select语句
sid | colA | colB | colC | colX
-------------------------
1 1 2 3 0
2 4 5 6 0
3 7 8 9 1
有了这些结果,我非常想知道我怎么能可能将它们插入到我的resultsTable使
select *
from resultsTable
看起来应该像下面的结果,并做以最有效的方式,请:d
rowId | sid1 | colA1 | colB1 | colC1 | sid2 | colA2 | colB2 | colC2 | sid3 | colA3 | colB3 | colC3 | colX
1 1 1 2 3 2 4 5 6 3 7 8 9 1
其中COLX位值属于最后一行,如在上述例子中,
colA | colB | colC | colX
-------------------------
7 8 9 1
感谢您的指点和帮助:d
1402 13编辑:
为了提供更多的信息或更清楚,我需要,因为我有一个定义的一切,我应该从选择rowid的另一个表插入到resultsTable返回的行。 此表只包含起点RowId的公司。
因此,该期望的输出可能看起来像下面如果RowIdsFromTable包含3个值,1,12和20
rowId | sid1 | colA1 | colB1 | colC1 | sid2 | colA2 | colB2 | colC2 | sid3 | colA3 | colB3 | colC3 | colX
1 1 1 2 3 2 4 5 6 3 7 8 9 1
2 12 24 9 13 32 13 43 88 14 2 54 23 0
3 20 xx xx xx 21 xx xx xx 22 xx xx xx 1
其中“xx”表示从sourceTable会整数值。 请注意,SID的升序的顺序。
我附上与表和一些测试数据的SQL小提琴: http://sqlfiddle.com/#!3/95fa8/1/0 。