0
DBMS는 intersystems-cache입니다! 이처럼 복잡한 LEFT JOIN이 예상대로 작동하지 않습니다.
VXU_V04 0 (null) ADT_A03 3 0.01 ADT_A04 3 0.01 ADT_A08 143 0.01
이 0 레코드가 하나 개의 결과가 있음을 감안할 때, 그것은 보인다
:SELECT m.Name AS MessageType, COUNT(l.name) AS MessageCount, CAST(AVG(ResponseTime) AS DECIMAL(5, 2)) AS AvgResponseTime FROM (SELECT DISTINCT(name) FROM ENSLIB_HL7.Message) m LEFT JOIN ( SELECT CAST(li.SessionId AS Bigint) AS session_id, li.name, MIN(li.TimeCreated) AS SessionStart, MAX(lo.TimeCreated) AS SessionEnd, CAST(DATEDIFF(s, MIN(li.TimeCreated), MAX(lo.TimeCreated)) AS DECIMAL(5, 2)) AS ResponseTime FROM (SELECT h1.SessionId, h1.TimeCreated, $PIECE(RawContent, '|', 4), m1.name FROM ens.messageheader h1, ENSLIB_HL7.Message m1 WHERE h1.MessageBodyId = m1.id AND h1.TimeCreated > DATEADD(mi, -30, GETUTCDATE())) li JOIN (SELECT h2.SessionId, h2.TimeCreated FROM ens.messageheader h2, ENSLIB_HL7.Message m2 WHERE h2.MessageBodyId = m2.id AND h2.TimeCreated > DATEADD(mi, -30, GETUTCDATE())) lo ON li.SessionId = lo.SessionId GROUP BY li.SessionId ) l on m.name = l.name GROUP BY l.Name
이 나에게 사 개 결과를 제공합니다 : 여기
내 전체 쿼리입니다 일. 내가
SELECT DISTINCT(name) FROM ENSLIB_HL7.Message
를 실행하는 경우 그러나, 나는 얻을 10 개 개의 결과 :VXU_V04 ADT_A08 ACK_A08 ADT_A03 ACK_A03 ADT_A04 ACK_A04 ACK_V04 ADT_A01 ACK_A01
가 왜 내 전체 쿼리 열 개 행을 얻을하지 않습니다?
: facepalm : 감사합니다. –
"이지만 Intersystems Cache는이를 허용합니다." ¯ \ _ (ツ) _/¯ –