如何解决使用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,dti.TodayDate)) = @CurrentYear
)
SELECT * FROM DatesToInsert
通过该CTE(公用表表达式),您可以将值插入表中并检查您具有的所有其他要求。当然,您可以使DATEADD
呼叫中的号码4
可配置,例如作为包含此CTE来处理插入内容的存储过程的参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。