sql >> Databáze >  >> RDS >> Mysql

Podmínky MySQL z více řádků

Ano, musíte to udělat s dílčím dotazem, zkuste něco takového (pokud chcete, aby 4. řádek přistupoval k datu ve 3. řádku):

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

Funkční ukázku si můžete prohlédnout zde

Nebo můžete zkusit tento dotaz, pokud chcete, aby 3. řádek měl přístup k datu ve 4. řádku

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;

Funkční ukázku si můžete prohlédnout zde




  1. LEFT JOIN vs. LEFT OUTER JOIN v SQL Server

  2. Funkce TO_DSINTERVAL() v Oracle

  3. Jak vytvořit databázi v kontejneru databázového dockeru?

  4. Mysql - Chyba analýzy (chyba syntaxe) v mém kódu