Estrarre terzo elemento di una lista

di il
16 risposte

16 Risposte - Pagina 2

  • Re: Estrarre terzo elemento di una lista

    Salve,

    io userei una windowing function, vedi ROW_NUMBER() OVER (PARTITION BY i.IdCliente ORDER BY i.Data, i.Id) sulla tabella Ingressi… userei anche DATENAME(weekday, i.Data) per avere direttamente il nome del giorno…

    questo ritornerebbe, per ogni IngressoCliente, il row number dell'ingresso.. filtri per rn = 3, metti in join con dbo.Clienti, ….

    INSERT INTO dbo.Clienti 
    	VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd');
    INSERT INTO dbo.Ingressi
    	VALUES (1, '2023-01-01'), (1, '2023-01-02'), (1, '2023-01-03'), (1, '2023-01-03')
    	, (2, '2023-01-01')
    	, (3, '2023-01-01'), (3, '2023-01-02')
    	, (4, '2023-01-02'), (4, '2023-01-04'), (4, '2023-01-04')
    
    
    result:
    Id          Nome  dateName
    ----------- ----- -----------
    1           a     Tuesday
    4           d     Wednesday
    

    salutoni romagnoli
    – 
    Andrea

  • Re: Estrarre terzo elemento di una lista

    Alla fine ho risolto l'esercizio! Sicuramente la query non è scritta nel modo più smart ma fa il suo lavoro! Ve la scrivo, magari a qualcun* può essere utile o volete darmi un parere :)

    select GiornoSettimana, count(*) as numeroIngressi
    from (
    select  DATENAME(weekday, data_ingressi) GiornoSettimana,DATA_GIOCO,numeroingressi
    from 
    (
    select * from
    (
    Select id, clienti, data_ingressi, rank() over (partition by clienti order by data_ingressi asc) numeroingressi
    from ingressiNegozio
    ) as ooo where numeroingressi = 3
    ) t
    group by DATENAME(weekday, data_ingressi) , DATA_GIOCO,numeroingressi
    --order by datename(weekday, data_ingressi)
    ) t2
    group by GiornoSettimana

Devi accedere o registrarti per scrivere nel forum
16 risposte