sql >> Database teknologi >  >> RDS >> Oracle

ORACLE SQL Group Ved STADIG at give dubletter

Hvis CREATIONDATE er en datodatatype, indeholder den tidselementet ned til sekunder. Det er højst usandsynligt, at de hændelses-id'er, du leder efter det laveste af, vil have det nøjagtige tidspunkt. Formater datoen til en ISO-dato, og GROUP BY vil ignorere tidsforskellene.

SELECT TO_CHAR(MIN(I.INCIDENTID))      AS "Incident ID",
          to_char(I.CREATIONDATE, 'yyyy-mm-dd') AS "Creation Date",
          M.MESSAGESUBJECT                AS "Email Subject",
          MO.IPADDRESS                    AS "IP Address",
          MO.DOMAINUSERNAME               AS "Login ID",
          MO.ENDPOINTMACHINENAME          AS "Computer Name"
   FROM        MESSAGE M 
   LEFT JOIN   INCIDENT I 
   ON          M.MESSAGESOURCE = I.MESSAGESOURCE 
   AND         M.MESSAGEID = I.MESSAGEID
   AND         M.MESSAGEDATE    = I.MESSAGEDATE 
   LEFT JOIN   MESSAGEORIGINATOR MO
   ON          M.MESSAGEORIGINATORID = MO.MESSAGEORIGINATORID
   LEFT JOIN   MESSAGEEXT ME
   ON          ME.MESSAGEID = M.MESSAGEID
   LEFT JOIN   INCIDENTSTATUS S
   ON          S.INCIDENTSTATUSID = I.INCIDENTSTATUSID
   LEFT JOIN   CUSTOMATTRIBUTESRECORD C
   ON          C.CUSTOMATTRIBUTESRECORDID = I.CUSTOMATTRIBUTESRECORDID                    
   GROUP BY    to_char(I.CREATIONDATE, 'yyyy-mm-dd') 
               M.MESSAGESUBJECT,
               MO.IPADDRESS,
               MO.DOMAINUSERNAME,
               MO.ENDPOINTMACHINENAME



  1. Når DRY-princippet ikke gælder:BITWISE-operationer i SQL Server

  2. PHP konstant ikke defineret

  3. Linq to Entities Group By (OUTER APPLY) oracle 11.2.0.3.0 understøtter ikke gælder

  4. hvordan sender man en null-værdi til et fremmednøglefelt?