[英]Insert multiple rows in Database table using T-sql
我想创建 SQL 语句(可能是存储过程)以在数据库表中插入多行。 一年中的日期取决于所选的周数。
例如:如果选择的周数 = 4
sql 语句应在数据库表中插入当前日期的新行,为每行添加 4 周到当前日期,如下所示:
CompanyID DateStart ServiceType
101 todayDate 0091
101 TodayDate + 4weeks 0091
101 TodayDate + 8weeks 0091
101 TodayDate + 12weeks 0091
. . .
. . .
. . .
101 TodayDate + #weeks 0091
(until this yearEnd only)
**请注意:
1.在执行上述脚本之前,我想检查公司(#101)serviceType(#0091)在同一个数据库表中是否有上一年的记录。 如果存在任何记录,我想删除这些记录。
2. 我还想确定公司(101)的服务类型(#0091)是否在当年已经存在,那么我不应该在数据库表中插入新行。
非常感谢您花时间理解我的问题以产生适当的结果。
您可以尝试这样的事情来生成要插入的行:
DECLARE @CurrentYear INT = YEAR(GETDATE())
;WITH DatesToInsert AS
(
SELECT
101 AS 'CompanyID',
GETDATE() AS 'TodayDate',
'0091' AS 'ServiceType'
UNION ALL
SELECT
101 AS 'CompanyID',
DATEADD(WEEK, 4, dti.TodayDate) AS 'TodayDate',
'0091' AS 'ServiceType'
FROM
DatesToInsert dti
WHERE
YEAR(DATEADD(WEEK, 4, dti.TodayDate)) = @CurrentYear
)
SELECT * FROM DatesToInsert
通过该 CTE(通用表表达式),您可以将值插入表中并检查您拥有的所有其他要求。 当然,您可以使DATEADD
调用中的数字4
可配置,例如作为包含此 CTE 以处理插入的存储过程的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.