栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

提示表可在两个日期之间插入缺失的日期?的SQL

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

提示表可在两个日期之间插入缺失的日期?的SQL

另一个选项:(再次更新)
创建并填充示例表( 在您的下一个问题中将这一步保存给我们)

DECLARE @T as TABLE(    Staff_ID    int,    [Date]      date,     [Year]      int,    Mon         int,    [Day]       int,    First_Name  varchar(10),    Last_Name   varchar(10),    Section     varchar(10),     Time_Worked datetime)INSERT INTO @T VALUES(1001, '2016-06-01', 2016, 6, 1, 'Bill', 'Price', 'Level 1', '2016-06-01 8:30:00.000'),(1001, '2016-06-05', 2016, 6, 5, 'Bill', 'Price', 'Level 1', '2016-06-05 8:30:00.000'),(1001, '2016-06-09', 2016, 6, 9, 'Bill', 'Price', 'Level 1', '2016-06-09 8:30:00.000'),(1001, '2016-07-05', 2016, 7, 5, 'Bill', 'Price', 'Level 2', '2016-06-12 8:30:00.000'), -- Different month(1002, '2016-06-01', 2016, 6, 1, 'Mary', 'Somers', 'Level 1', '2016-06-01 8:30:00.000'),(1002, '2016-06-05', 2016, 6, 5, 'Mary', 'Somers', 'Level 1', '2016-06-05 8:30:00.000'),(1002, '2016-06-08', 2016, 6, 8, 'Mary', 'Somers', 'Level 1', '2016-06-08 8:30:00.000'),(1003, '2016-06-03', 2016, 6, 3, 'Mark', 'Jones', 'Level 1', '2016-06-03 8:30:00.000'),(1003, '2016-06-04', 2016, 6, 4, 'Mark', 'Jones', 'Level 1', '2016-06-05 8:30:00.000')

声明并填充

@StartDate
@EndDate

DECLARE @StartDate  datetime = '2016-06-01',        @EndDate datetime = '2016-08-01'

INSERT...SELECt
语句:(我选择使用一个CTE,所以我就不用写了
dateadd(DD,ID-1,@StartDate)
这么多次)

;WITH Calendar AS(    SELECT dateadd(DD,ID-1,@StartDate) as [Date]    FROM dbo.Tally    WHERe dateadd(DD,ID-1,@StartDate) < @EndDate)INSERT INTO @T (Staff_ID, [Date], [Year], Mon, [Day], First_Name, Last_Name, Section)SELECt DISTINCT Staff_ID, C.[Date], Year(C.[Date]), MonTH(C.[Date]), DAY(C.[Date]), First_Name, Last_Name, SectionFROM @T TCROSS APPLY (    SELECt Cal.[Date]    FROM Calendar Cal    WHERe MonTH(Cal.[Date]) = MonTH(T.[Date])    AND YEAR(Cal.[Date]) = YEAR(T.[Date])    AND NOT EXISTS    (        SELECt 1        FROM @T T2        WHERe T.Staff_ID = T2.Staff_ID         AND T2.[Date] = Cal.[Date]    )) C

验证插入物:

SELECt Staff_ID, [Date], [Year], Mon, [Day], First_Name, Last_Name, Section, Time_Worked FROM @T ORDER BY Staff_ID, [Date]

结果:

Staff_ID    Date       Year        Mon         Day         First_Name Last_Name  Section    Time_Worked----------- ---------- ----------- ----------- ----------- ---------- ---------- ---------- -----------------------1001        2016-06-01 2016        61Bill       Price      Level 1    2016-06-01 08:30:00.0001001        2016-06-02 2016        62Bill       Price      Level 1    NULL1001        2016-06-03 2016        63Bill       Price      Level 1    NULL1001        2016-06-04 2016        64Bill       Price      Level 1    NULL1001        2016-06-05 2016        65Bill       Price      Level 1    2016-06-05 08:30:00.0001001        2016-06-06 2016        66Bill       Price      Level 1    NULL1001        2016-06-07 2016        67Bill       Price      Level 1    NULL1001        2016-06-08 2016        68Bill       Price      Level 1    NULL1001        2016-06-09 2016        69Bill       Price      Level 1    2016-06-09 08:30:00.0001001        2016-06-10 2016        610          Bill       Price      Level 1    NULL1001        2016-06-11 2016        611          Bill       Price      Level 1    NULL1001        2016-06-12 2016        612          Bill       Price      Level 1    NULL1001        2016-06-13 2016        613          Bill       Price      Level 1    NULL1001        2016-06-14 2016        614          Bill       Price      Level 1    NULL1001        2016-06-15 2016        615          Bill       Price      Level 1    NULL1001        2016-06-16 2016        616          Bill       Price      Level 1    NULL1001        2016-06-17 2016        617          Bill       Price      Level 1    NULL1001        2016-06-18 2016        618          Bill       Price      Level 1    NULL1001        2016-06-19 2016        619          Bill       Price      Level 1    NULL1001        2016-06-20 2016        620          Bill       Price      Level 1    NULL1001        2016-06-21 2016        621          Bill       Price      Level 1    NULL1001        2016-06-22 2016        622          Bill       Price      Level 1    NULL1001        2016-06-23 2016        623          Bill       Price      Level 1    NULL1001        2016-06-24 2016        624          Bill       Price      Level 1    NULL1001        2016-06-25 2016        625          Bill       Price      Level 1    NULL1001        2016-06-26 2016        626          Bill       Price      Level 1    NULL1001        2016-06-27 2016        627          Bill       Price      Level 1    NULL1001        2016-06-28 2016        628          Bill       Price      Level 1    NULL1001        2016-06-29 2016        629          Bill       Price      Level 1    NULL1001        2016-06-30 2016        630          Bill       Price      Level 1    NULL1001        2016-07-01 2016        71Bill       Price      Level 2    NULL1001        2016-07-02 2016        72Bill       Price      Level 2    NULL1001        2016-07-03 2016        73Bill       Price      Level 2    NULL1001        2016-07-04 2016        74Bill       Price      Level 2    NULL1001        2016-07-05 2016        75Bill       Price      Level 2    2016-06-12 08:30:00.0001001        2016-07-06 2016        76Bill       Price      Level 2    NULL1001        2016-07-07 2016        77Bill       Price      Level 2    NULL1001        2016-07-08 2016        78Bill       Price      Level 2    NULL1001        2016-07-09 2016        79Bill       Price      Level 2    NULL1001        2016-07-10 2016        710          Bill       Price      Level 2    NULL1001        2016-07-11 2016        711          Bill       Price      Level 2    NULL1001        2016-07-12 2016        712          Bill       Price      Level 2    NULL1001        2016-07-13 2016        713          Bill       Price      Level 2    NULL1001        2016-07-14 2016        714          Bill       Price      Level 2    NULL1001        2016-07-15 2016        715          Bill       Price      Level 2    NULL1001        2016-07-16 2016        716          Bill       Price      Level 2    NULL1001        2016-07-17 2016        717          Bill       Price      Level 2    NULL1001        2016-07-18 2016        718          Bill       Price      Level 2    NULL1001        2016-07-19 2016        719          Bill       Price      Level 2    NULL1001        2016-07-20 2016        720          Bill       Price      Level 2    NULL1001        2016-07-21 2016        721          Bill       Price      Level 2    NULL1001        2016-07-22 2016        722          Bill       Price      Level 2    NULL1001        2016-07-23 2016        723          Bill       Price      Level 2    NULL1001        2016-07-24 2016        724          Bill       Price      Level 2    NULL1001        2016-07-25 2016        725          Bill       Price      Level 2    NULL1001        2016-07-26 2016        726          Bill       Price      Level 2    NULL1001        2016-07-27 2016        727          Bill       Price      Level 2    NULL1001        2016-07-28 2016        728          Bill       Price      Level 2    NULL1001        2016-07-29 2016        729          Bill       Price      Level 2    NULL1001        2016-07-30 2016        730          Bill       Price      Level 2    NULL1001        2016-07-31 2016        731          Bill       Price      Level 2    NULL1002        2016-06-01 2016        61Mary       Somers     Level 1    2016-06-01 08:30:00.0001002        2016-06-02 2016        62Mary       Somers     Level 1    NULL1002        2016-06-03 2016        63Mary       Somers     Level 1    NULL1002        2016-06-04 2016        64Mary       Somers     Level 1    NULL1002        2016-06-05 2016        65Mary       Somers     Level 1    2016-06-05 08:30:00.0001002        2016-06-06 2016        66Mary       Somers     Level 1    NULL1002        2016-06-07 2016        67Mary       Somers     Level 1    NULL1002        2016-06-08 2016        68Mary       Somers     Level 1    2016-06-08 08:30:00.0001002        2016-06-09 2016        69Mary       Somers     Level 1    NULL1002        2016-06-10 2016        610          Mary       Somers     Level 1    NULL1002        2016-06-11 2016        611          Mary       Somers     Level 1    NULL1002        2016-06-12 2016        612          Mary       Somers     Level 1    NULL1002        2016-06-13 2016        613          Mary       Somers     Level 1    NULL1002        2016-06-14 2016        614          Mary       Somers     Level 1    NULL1002        2016-06-15 2016        615          Mary       Somers     Level 1    NULL1002        2016-06-16 2016        616          Mary       Somers     Level 1    NULL1002        2016-06-17 2016        617          Mary       Somers     Level 1    NULL1002        2016-06-18 2016        618          Mary       Somers     Level 1    NULL1002        2016-06-19 2016        619          Mary       Somers     Level 1    NULL1002        2016-06-20 2016        620          Mary       Somers     Level 1    NULL1002        2016-06-21 2016        621          Mary       Somers     Level 1    NULL1002        2016-06-22 2016        622          Mary       Somers     Level 1    NULL1002        2016-06-23 2016        623          Mary       Somers     Level 1    NULL1002        2016-06-24 2016        624          Mary       Somers     Level 1    NULL1002        2016-06-25 2016        625          Mary       Somers     Level 1    NULL1002        2016-06-26 2016        626          Mary       Somers     Level 1    NULL1002        2016-06-27 2016        627          Mary       Somers     Level 1    NULL1002        2016-06-28 2016        628          Mary       Somers     Level 1    NULL1002        2016-06-29 2016        629          Mary       Somers     Level 1    NULL1002        2016-06-30 2016        630          Mary       Somers     Level 1    NULL1003        2016-06-01 2016        61Mark       Jones      Level 1    NULL1003        2016-06-02 2016        62Mark       Jones      Level 1    NULL1003        2016-06-03 2016        63Mark       Jones      Level 1    2016-06-03 08:30:00.0001003        2016-06-04 2016        64Mark       Jones      Level 1    2016-06-05 08:30:00.0001003        2016-06-05 2016        65Mark       Jones      Level 1    NULL1003        2016-06-06 2016        66Mark       Jones      Level 1    NULL1003        2016-06-07 2016        67Mark       Jones      Level 1    NULL1003        2016-06-08 2016        68Mark       Jones      Level 1    NULL1003        2016-06-09 2016        69Mark       Jones      Level 1    NULL1003        2016-06-10 2016        610          Mark       Jones      Level 1    NULL1003        2016-06-11 2016        611          Mark       Jones      Level 1    NULL1003        2016-06-12 2016        612          Mark       Jones      Level 1    NULL1003        2016-06-13 2016        613          Mark       Jones      Level 1    NULL1003        2016-06-14 2016        614          Mark       Jones      Level 1    NULL1003        2016-06-15 2016        615          Mark       Jones      Level 1    NULL1003        2016-06-16 2016        616          Mark       Jones      Level 1    NULL1003        2016-06-17 2016        617          Mark       Jones      Level 1    NULL1003        2016-06-18 2016        618          Mark       Jones      Level 1    NULL1003        2016-06-19 2016        619          Mark       Jones      Level 1    NULL1003        2016-06-20 2016        620          Mark       Jones      Level 1    NULL1003        2016-06-21 2016        621          Mark       Jones      Level 1    NULL1003        2016-06-22 2016        622          Mark       Jones      Level 1    NULL1003        2016-06-23 2016        623          Mark       Jones      Level 1    NULL1003        2016-06-24 2016        624          Mark       Jones      Level 1    NULL1003        2016-06-25 2016        625          Mark       Jones      Level 1    NULL1003        2016-06-26 2016        626          Mark       Jones      Level 1    NULL1003        2016-06-27 2016        627          Mark       Jones      Level 1    NULL1003        2016-06-28 2016        628          Mark       Jones      Level 1    NULL1003        2016-06-29 2016        629          Mark       Jones      Level 1    NULL1003        2016-06-30 2016        630          Mark       Jones      Level 1    NULL


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670370.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号