【发布时间】:2018-11-08 15:44:12
【问题描述】:
我需要每天有多少员工在某一天(定义为 Start_Date 和 End_Date 之间的@date)的每日快照,每个日期一行。
在某一时刻,以下脚本将返回所有每日快照,但它们均在单独的结果窗口中返回。我无法让查询组合所有结果以将每个新结果插入#PLEASEWORK。
我需要让下面的工作连续两天。它使用int 日期。我继承了这个问题,并正在构建一个日期表来解决这个问题。
CREATE TABLE #PLEASEWORK
(
[Date] INT
,Division_Description VARCHAR (100)
,[Count] INT
)
DECLARE @cnt AS INT
DECLARE @DATE AS INT
SET @CNT = '20181001'
WHILE @cnt >= @DATE
BEGIN
SELECT @DATE = '20181031' - 1
TRUNCATE TABLE #PLEASEWORK
INSERT INTO #PLEASEWORK
SELECT
@DATE [date]
,Division_Description
,COUNT(*) [Count]
--INTO #PLEASEWORK
FROM EmpMaster
WHERE
([Start_Date] <= @DATE
AND Leaving_Date = 0)
OR ([Start_Date] <= @DATE
AND Leaving_Date > @DATE)
GROUP BY
Division_Description
SET @cnt = @cnt + 1
CONTINUE
SELECT *
FROM #PLEASEWORK
END
【问题讨论】:
-
查看行和分区我认为这会做你想要的。 codeproject.com/Articles/308281/…
-
注意 - 您每次通过循环都会截断 #PLEASEWORK,因此当您使用这种方法从中选择时,您只会有 1 行。
-
@msturek 对不起,那些应该已经被注释掉了,只有 INSERT INTO 处于活动状态。
标签: sql common-table-expression sql-server-2016