Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL案例语句,用于正确扣合_Mysql_Case - Fatal编程技术网

MySQL案例语句,用于正确扣合

MySQL案例语句,用于正确扣合,mysql,case,Mysql,Case,重新提出这个问题,因为我仍在努力寻找正确的解决方案 我能够分离出仅“OA”的场景,并将它们适当地标记为NA。但是,我在隔离仅“I”事件以及正确老化同时具有I和OA事件的设备时遇到困难 这就是我现在用于衰老的逻辑,它对仅“I”事件非常有效,但正确地隔离“I”和“OA”设备,然后获得两个日期之间的差异是我无法理解的 datediff(curdate(),concat(左(eventDateTime,4),'-',中(eventDateTime,5,2),'-',中(eventDateTime,7,2

重新提出这个问题,因为我仍在努力寻找正确的解决方案

我能够分离出仅“OA”的场景,并将它们适当地标记为NA。但是,我在隔离仅“I”事件以及正确老化同时具有I和OA事件的设备时遇到困难

这就是我现在用于衰老的逻辑,它对仅“I”事件非常有效,但正确地隔离“I”和“OA”设备,然后获得两个日期之间的差异是我无法理解的

datediff(curdate(),concat(左(eventDateTime,4),'-',中(eventDateTime,5,2),'-',中(eventDateTime,7,2))作为仓库中的年龄

我尝试按EquipID进行分组,但当然,这只会给我一个eventDateTime结果,而且总是第一个结果,在“I”和“OA”的情况下,只有“I”eventDateTime

我也有识别“I”和“OA”事件的逻辑,但这只有在我打算将设备ID分组到一行时才能正确工作,如上所述,删除了正确设置这些设备ID年龄所需的第二个eventDateTime条目

GROUP_CONCAT(不同的状态cd)作为状态cd

非常感谢您的帮助或见解。一旦我有了这个“我”唯一的事件标记和老化,我终于可以完成这个仪表板,我正在为我们的团队建设

先谢谢你


J

旋转表格,以便将输入和输出日期分别放入同一
EquipID
的不同列中。然后可以减去它们,并为缺少的日期应用适当的默认值

SELECT EquipID, InDate, OutDate, StatusCD_N,
    CASE WHEN InDate AND OutDate THEN DATEDIFF(OutDate, InDate)
         WHEN InDate THEN DATEDIFF(CURDATE(), InDate)
         ELSE 'N/A' -- only OutDate
    END AS AgeInDepot
FROM (
    SELECT EquipID, GROUP_CONCAT(StatusCD) AS StatsuCD_N,
        MAX(IF(StatusCD = 'I', DATE(STR_TO_DATE(eventDateTime, '%Y%m%d%H%i')), NULL) AS InDate,
        MAX(IF(StatusCD = 'OA', DATE(STR_TO_DATE(eventDateTime, '%Y%m%d%H%i')), NULL) AS OutDate
    FROM yourTable
    GROUP BY EquipID
) AS x

@TimBiegeleisen只是在这个问题上打电话给你,因为上次你帮我们很快解决了问题。如果您看一下,请提前感谢。我们是否应该理解
I
OA
代表什么?如果您希望保留所有行,但同时也显示连接的状态,您可以通过使用
GROUP\u CONCAT
“I”将“在”仓库中的子查询来连接表,“OA”将是“仓库外”。仅“OA”事件没有“I”事件,因为它们是在我们开始从新客户接收EDI文件之前发生“仓库内”事件的设备。只有“I”或“I”和“OA”的问题在最新的EDI文件中。不要尝试在未知/未列出的问题中添加单词。从同一开始发布任务。添加示例数据(如CREATE TABLE+INSERT INTO,~10行)并严格显示此数据的所需输出(而不是“必须看起来像”)并进行详细解释。这是我实际做的,只是我在DATEFIFF()中用最小值隔离了“I”,用最大日期隔离了“OA”如果每个设备ID最多有一个
I
OA
行,那就没关系了。我不知道您想如何处理多行。