Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在月份更改时将所有旧行重新插入SQL Server表_Sql Server - Fatal编程技术网

Sql server 如何在月份更改时将所有旧行重新插入SQL Server表

Sql server 如何在月份更改时将所有旧行重新插入SQL Server表,sql-server,Sql Server,我有一个带有id,sname,考勤列的表,如 id sname attendance month 1 xyz p 12 2 asd p 12 3 qwe L 12 4 tyy A 12 我想为下个月的考勤重新插入id和sname 现在我想在考勤列中重新插入第一个月AB的数据,如下所示: id sname attendance month 1 xyz

我有一个带有
id
sname
考勤
列的表,如

id  sname attendance month
1    xyz     p         12  
2    asd     p         12  
3    qwe     L         12 
4    tyy     A         12
我想为下个月的
考勤重新插入
id
sname

现在我想在
考勤
列中重新插入第一个月AB的数据,如下所示:

id  sname attendance  month 
 1    xyz     p         12  
 2    asd     p         12  
 3    qwe     L         12 
 4    tyy     A         12 
 1    xyz     ab         1  
 2    asd     ab         1  
 3    qwe     ab         1
 4    tyy     ab         1 
试试这个

INSERT INTO your_table (id,sname,attendance,month)
SELECT T.id, T.sname, T.attendance, M.m
FROM (SELECT 1 m UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) AS M
CROSS JOIN your_table T
WHERE NOT EXISTS (SELECT * FROM your_table WHERE m=M.m)
最好不要在表、列和其他对象的名称中使用保留字,如
MONTH

如果我没有弄错:

INSERT INTO t (id,sname,attendance,month)
SELECT id,sname,'ab',(month%12)+1 from t

表中的月份在哪里?很抱歉,最后一个字段是月份