我正在 SP 做类似的事情,
insert into @FilteredTbl select * from @MasterTbl
但现在的问题是我希望在添加到@FilteredTbl之前对@MasterTbl的数据进行排序,
我怎样才能做到这一点?
也许是这样的:
INSERT INTO @FilteredTbl
SELECT * FROM @MasterTbl AS tbl
ORDER BY tbl.OrderbyColumn
尝试以下方法将排序结果插入临时表。使用 ROW_NUMBER 来 ORDER BY 表结果
DECLARE @FilteredTbl AS TABLE
(
RowID INT
[Column_1]
[Column_2]
.
.
)
insert into @FilteredTbl
select ROW_NUMBER()OVER(ORDER BY [ShortColumn]),[Field_1],[Field_2]... from @MasterTbl
我遇到了同样的问题,并通过将 id 作为身份添加到声明的表中来解决它
您的情况:
@FilteredTbl
ID int identity not null,
your columns...
插入排序数据时,它仍然按原样排序
您可以在 select 语句中使用按类排序
insert into @FilteredTbl
select * from @MasterTbl
order by <column name>
INSERT INTO @FilteredTbl SELECT * FROM @MasterTbl AS mtb ORDER BY mtb.OrderbyColumn [desc]
如果您想按列降序排序,则 desc 是可选的,而不是添加 ir,否则无需添加
在插入另一个表之前,请根据需要对表进行排序。
喜欢:
Select * From @MasterTbl m Order By m.ColumnName
然后插入到你的新表中
Insert Into @FilterTbl Select * From @MasterTbl m Order By m.ColumnName [DESC]
您还可以使用
Where
子句过滤您的@MasterTbl
您应该在您的表中添加身份,然后它就会像这样排序
CREATE TABLE #test (
s int IDENTITY (1, 1),
ID int,
Name varchar(50),
part int
);
INSERT INTO #test (ID,Name,Part)
SELECT ID, Name, Part FROM Table_1 ORDER BY ID DESC
SELECT * FROM #test