Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Bedingungen aus mehreren Zeilen

Ja, Sie müssen dies mit einer Unterabfrage tun, versuchen Sie es mit so etwas (wenn Sie möchten, dass die 4. Zeile auf das Datum in der 3. Zeile zugreift):

SELECT  mo.AgentID, mo.date,
        @r AS 'LAG(date)',
        (case when @r<Date then 'YES' when @r is null then 'IS NULL' else 'NO' end) 'Is Bigger',
        (@r := Date) AS Date

FROM    (
        SELECT  m.*
        FROM    (
                SELECT  @_date = NULL
                ) variable,
                data m
        ORDER BY
                AgentID 
        ) mo
WHERE  (CASE WHEN @_date IS NULL OR @_date <> date THEN @r := NULL ELSE NULL END IS NULL)
        AND (@_date := date) IS NOT NULL

Eine funktionierende Demo können Sie sich hier ansehen

Oder Sie können diese Abfrage ausprobieren, wenn Sie möchten, dass die 3. Zeile Zugriff auf das Datum in der 4. Zeile hat

SELECT AgentID,date,LEAD_date,concat(Difference,' days') FROM
(SELECT  mo.AgentID, 
        @r AS LEAD_date,
        DATEDIFF(@r,Date) as Difference,
        (@r := Date) AS Date

FROM    (
        SELECT  m.*
        FROM    (
                SELECT  @_date = NULL
                ) variable,
                data m
        ORDER BY
                AgentID,date desc 
        ) mo
WHERE  (CASE WHEN @_date IS NULL OR @_date <> date THEN @r := NULL ELSE NULL END IS NULL)
        AND (@_date := date) IS NOT NULL) T
order by AgentID,date;

Eine funktionierende Demo finden Sie hier