繁体   English   中英

使用 T-sql 在数据库表中插入多行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM