0
表sca_ticket_thread存储状态更改日期。我试图计算两个状态之间的平均时间差。 “已创建”列存储状态更改的日期,“正文”列存储状态更改。计算同一张表上的行之间的平均时间差
SELECT AVG(DateDiff((SELECT created FROM
(SELECT created
FROM sca_ticket_thread
WHERE body = 'AchangetoB'
OR body = 'BchangetoC'
GROUP BY ticket_id
HAVING count(*) > 1)
as subquery),
(SELECT created
FROM sca_ticket_thread
WHERE body = 'BchangetoC'
ORDER BY ticket_id)))
FROM sca_ticket_thread
我收到的错误是:#1242 - 子查询返回多个1行
我(在概念上,一点点)了解到,子查询不能返回超过1行。我已经考虑加入一张表作为一种可能的解决方案,但我认为这不是正确的道路。
最后,我想生成从A到B的平均状态的变化,B到C到d等
ID | STATUS | DATE
--------------------------
1 | Status A | 02/01/2015
1 | Status A | 02/02/2015
2 | Status B | 02/03/2015
运行的两个子查询,看看他们返回的内容。我无法回想一下子查询可以返回多少行的限制。例如:'SELECT * FROM X WHERE x_id IN(SELECT x_id FROM X where x_value LIKE'foo%');'完全有效,子查询可以返回多行。有些选项可以实现你想要的功能,包括:LIMIT,GROUP,MAX,MIN等等。 – nevets1219
第一个select语句返回24行,第二个是17.这是问题吗? – Duke
是的。 DateDiff只需要两个参数。您需要过滤掉其他行以获得您想要的。此外,您应该确保多个'AchangetoB'和'BchangetoC'是有效的,如果不是,您可能会收紧架构以防止出现这种情况。 – nevets1219