按周期天数订购日期/小组任务

阿拉恩

我有一组任务,每个周期执行一次,并且可以重复执行。现在,我首先必须计算这些任务的发生并对它们进行排序,然后对结果进行透视以在临时表中获得以下结果:

在此处输入图片说明

此数据是一个周期集合,发生于2016年12月5日至2016年12月16日(7天周期),每个周期中有5个任务,我希望数据像这样聚集在一起:

在此处输入图片说明

我想不出如何从第一个数据集中获得最终结果。正如您在第一个数据集中看到的那样,列中的日期顺序可以是无序的,就像2016年12月9日在2016年12月7日之前在2016年8月12日之前一样,但是任务始终会在一个特定的日期中发生模式,即“ Ecs和打印标签”将始终在“库存预览”和“订购并接收药品”之后出现。

我总是可以使用循环和东西,但是如果有人可以帮助我找到对此ID的正确查询,我们将不胜感激。

这是一些创建上面显示的数据的示例代码:

CREATE TABLE tasks (
    CurrentOccurrenceDate DATETIME,
    TaskID INT,
    EmpID INT,
    FacName VARCHAR(50),
    Census DATETIME,
    [Cycle Drop] DATETIME,
    [ECS and Print Label] DATETIME,
    [Inventory Preview] DATETIME,
    [Order and Receive Meds] DATETIME
)

INSERT INTO tasks (CurrentOccurrenceDate, TaskID, EmpID, FacName, Census, [Cycle Drop], [ECS and Print Label], [Inventory Preview], [Order and Receive Meds]) VALUES
('2016-12-05', 1, 1, '75TH TERRACE', '2016-12-05', NULL, NULL, NULL, NULL),
('2016-12-06', 2, 1, '75TH TERRACE', NULL, '2016-12-06', NULL, NULL, NULL),
('2016-12-07', 3, 1, '75TH TERRACE', NULL, NULL, NULL, '2016-12-07', NULL),
('2016-12-08', 4, 1, '75TH TERRACE', NULL, NULL, NULL, NULL, '2016-12-08'),
('2016-12-09', 5, 1, '75TH TERRACE', NULL, NULL, '2016-12-09', NULL, NULL),
('2016-12-12', 1, 1, '75TH TERRACE', '2016-12-12', NULL, NULL, NULL, NULL),
('2016-12-13', 2, 1, '75TH TERRACE', NULL, '2016-12-13', NULL, NULL, NULL),
('2016-12-14', 3, 1, '75TH TERRACE', NULL, NULL, NULL, '2016-12-14', NULL),
('2016-12-15', 4, 1, '75TH TERRACE', NULL, NULL, NULL, NULL, '2016-12-15'),
('2016-12-16', 5, 1, '75TH TERRACE', NULL, NULL, '2016-12-16', NULL, NULL)
3N1GM4

我将使用CTE标记周期,然后使用子查询查询每个周期的相关日期值:

WITH tasksEnhanced (CurrentOccurrenceDate, TaskID, EmpID, FacName, Census, [Cycle Drop], [ECS and Print Label], [Inventory Preview], [Order and Receive Meds], cycleNum) AS
(
    SELECT  t1.*,
            (
                SELECT COUNT(*) 
                FROM tasks t2 
                WHERE t1.FacName = t2.FacName 
                AND t1.TaskID = t2.TaskID 
                AND t2.CurrentOccurrenceDate < t1.CurrentOccurrenceDate
            ) + 1 AS cycleNum
    FROM tasks t1
)
SELECT DISTINCT
        te1.FacName,
        te1.cycleNum,
        (SELECT Census                   FROM tasksEnhanced census    WHERE census.FacName    = te1.FacName AND census.cycleNum    = te1.cycleNum AND census.Census                      IS NOT NULL) AS Census,
        (SELECT [Cycle Drop]             FROM tasksEnhanced cycleDrop WHERE cycleDrop.FacName = te1.FacName AND cycleDrop.cycleNum = te1.cycleNum AND cycleDrop.[Cycle Drop]             IS NOT NULL) AS [Cycle Drop],
        (SELECT [Inventory Preview]      FROM tasksEnhanced inv       WHERE inv.FacName       = te1.FacName AND inv.cycleNum       = te1.cycleNum AND inv.[Inventory Preview]            IS NOT NULL) AS [Inventory Preview],
        (SELECT [Order and Receive Meds] FROM tasksEnhanced orderMeds WHERE orderMeds.FacName = te1.FacName AND orderMeds.cycleNum = te1.cycleNum AND orderMeds.[Order and Receive Meds] IS NOT NULL) AS [Order and Receive Meds],
        (SELECT [ECS and Print Label]    FROM tasksEnhanced ECS       WHERE ECS.FacName       = te1.FacName AND ECS.cycleNum       = te1.cycleNum AND ECS.[ECS and Print Label]          IS NOT NULL) AS [ECS and Print Label]
FROM tasksEnhanced te1
ORDER BY te1.FacName, te1.cycleNum

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails按日期有条件订购任务

来自分类Dev

加快按日期订购

来自分类Dev

订购日期按sqlite降序

来自分类Dev

按日期订购唯一帐户

来自分类Dev

如何按今天的日期订购2列

来自分类Dev

umbraco Razor-按日期(仅日期)订购日期

来自分类Dev

从某个开始日期开始按工作天数计算日期

来自分类Dev

小组中的MIN日期

来自分类Dev

小组中的MIN日期

来自分类Dev

R:按ID计算特定日期之前的天数

来自分类Dev

Javascript:按日期对数据进行分组并填写其间的天数

来自分类Dev

Rails 4:按孩子的最新日期订购模型

来自分类Dev

在Rails中按日期时间输入订购数据

来自分类Dev

按日期订购具有不同内容类型的Contentful

来自分类Dev

在Rails中按日期时间输入订购数据

来自分类Dev

缺少月份时按年份和日期订购dt

来自分类Dev

如何按更新的日期和时间订购varchar Desc

来自分类Dev

按创建日期订购“自定义视图”元素?

来自分类Dev

小组活动天数(基于匹配时间)

来自分类Dev

从客户按 ID 购买日期到在 Python 中按 ID 购买的天数间隔

来自分类Dev

按日期将包含几天数据的行拆分为单个日期(BigQuery)

来自分类Dev

根据每天的小时数计算一周的小组天数

来自分类Dev

按现场订购

来自分类Dev

按订购分组-JS

来自分类Dev

Excel:天数返回日期

来自分类Dev

日期之间的天数?

来自分类Dev

日期之间的天数计算

来自分类Dev

日期列表之间的天数

来自分类Dev

根据天数的日期