您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何填补空白?

如何填补空白?

您有2个要解决的问题。第一个问题是如何填补空白。第二个问题是为那些缺少的记录填充“计数”字段。

问题1:这可以通过使用Dates Lookup table或创建一个解决recursive common table expression。如果可以的话,我建议为此创建一个“日期查询”表。如果您不能创建这样的表,那么您将需要这样的东西。

WITH CTE AS (
  SELECT MAX(dt) maxdate, MIN(dt) mindate
  FROM yourtable
  ),
RecursiveCTE AS (
  SELECT mindate dtfield
  FROM CTE
  UNION ALL
  SELECT DATEADD(day, 1, dtfield)
  FROM RecursiveCTE R 
    JOIN CTE T
      ON R.dtfield < T.maxdate
  )

这将为您创建一个日期列表,该MIN日期列表从表中的日期开始,以结束MAX

问题2:在这里可以correlated subquery派上用场(就像我通常在远离它们的地方一样),可以从原始表中获取最后一个cnt:

SELECT r.dtfield, 
   (SELECT TOP 1 cnt
    FROM yourtable 
    WHERE dt <= r.dtfield 
    ORDER BY dt DESC) cnt
FROM RecursiveCTE r
其他 2022/1/1 18:45:31 有298人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶