在我开始之前请原谅我的无知,但是我试图在查询中两次引用同一个表来带回一行。无论出于何种原因,我都很难理解子查询/连接概念。为了确保我能够真正获得我用这个基本查询得到的数据:
SELECT aCR
, COUNT(CASE WHEN aSID = 30 THEN 1 ELSE NULL END) AS wtng
, CASE WHEN aSID = 30 THEN DATE_FORMAT(aAT, '%d %b %H:%i') ELSE NULL END AS wAT
, COUNT(CASE WHEN DATEDIFF(aC, CURDATE()) <=30 AND aSID != 30 THEN 1 ELSE NULL END) AS rpt
, CASE WHEN DATEDIFF(aC, CURDATE()) <=30 AND asID != 30 THEN DATE_FORMAT(aAT, '%d %b %H:%i') ELSE NULL END AS rAT
FROM a
WHERE aCR = 1111111111 AND aHID = 44 GROUP BY aID
给了我这个
aCR | wtng | wAT | rpt | rAT
-------------------------------------------------------------------
1111111111 | 0 | NULL | 1 | 16 Sep 12:39
1111111111 | 1 | 17 Sep 17:59 | 0 | NULL
这是正确的数据,但我需要在一行中:
aCR | wtng | wAT | rpt | rAT
-------------------------------------------------------------------
1111111111 | 1 | 17 Sep 17:59 | 1 | 16 Sep 12:39
可能是没有与aCR匹配的时间,因此没有返回行但是如果wtng为1,rpt为1或者两者都是1,我需要返回一行......这就是我真正在努力的地方。我试过了 许多子查询组合,但似乎无法得到它所以我正在寻求帮助...如果这是一个非常愚蠢的问题,或者如果我错过了完全明显但现在我觉得好像我',请提前道歉我只是围成一圈......
真的很感谢投票,无论是谁 - 它让学习变得更有趣
答案 0 :(得分:0)
SELECT aCR
, MAX(wtng) AS wtng
, MAX(wAT) AS wAT
, MAX(rpt) AS rpt
, MAX(rAT) ASrAT
FROM ( "my query here" ) AS yourquery
GROUP
BY aCR