ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2)
比如,把每个班的学生按年龄从小到大的排序:
1 2 3 4 5 6
SELECT [CLASS] ,[NAME] ,[AGE] ,ROW_NUMBER() OVER (PARTITION BY [CLASS] ORDER BY [AGE] ASC) FROM TEST_T
Merge
简单使用:如果学生信息存在,则更新学生年龄。如果不存在,则插入学生信息。
1 2 3 4 5 6 7 8 9 10
MERGE INTO D_StudentT AS target USING Temp_StudentT AS source ON target.CLASS = source.CLASS AND target.NAME=source.NAME WHEN MATCHED THEN UPDATE SET target.AGE=source.AGE, target.UpdatedTime=GETDATE() WHEN NOT MATCHED THEN INSERT(CLASS,NAME,AGE) VALUES(source.CLASS,source.NAME,source.AGE);