簡體   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