Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Aiuto query su date

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    19

    Aiuto query su date

    Necessito di assistenza per una query sulle date.

    Ho una tabella così formata
    ID--------DataIn-----------DataOut---
    01 07-12-2008 10-12-2008
    02 11-10-2008 13-10-2008
    03 07-12-2008 15-12-2008

    Vorrei creare un'altra tabella con delle statistiche. Per meglio dire vorrei sapere per ogni giorno quanti record registrati ho.
    Seguendo l'esempio scritto dovrebbe comparirmi che in data 07-12-2008 ho due record registrati.

    Sapreste darmi una mano? Vi ringrazio

    Ps Utilizzo microsoft SQL serer management studio express

  2. #2
    quindi conta solo DataIn? puoi fare una COUNT...GROUP BY

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    19
    No in realtà non conta solo dataIn.

    Quello che voglio dire è che se prendo in considerazione il periodo 07-12 E 10-12 avrò 1a presenza per ogni giorno compreso fra queste due date (considerando solo il record con ID 01).

    Io ho fatto l'esempio con i due 07-12 per dire che in tale giorno ho due riscontri (considerando i record 01 e 03) e così sarà fino al giorno 10-12, poi dall'11-12 al 15-12 avrò sono un riscontro...

    non so se sono stato abbastanza chiaro

  4. #4
    parti dall'esempio che hai fatto, ed esponi (chiaramente, m'è rimasto solo un neurone, ché l'altro è in vacanza ) il risultato che vuoi ottenere

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    19
    Ok ,non ti preoccupare capisco che per me sia chiaro dato che so dove vorrei andare a parare ma capisco anche che io sia abbastanza negato nell'esporlo. Ora vedo di fare un esempio

    DATA--------PRESENZA-----
    07-12-2008 2
    08-12-2008 2
    09-12-2008 2
    10-12-2008 2
    11-12-2008 1
    12-12-2008 1
    .
    .
    15-12-2008 1
    11-10-2008 1
    12-10-2008 1
    13-10-2008 1



    Ti ringrazio nuovamente

  6. #6
    Originariamente inviato da Aegis
    Ok ,non ti preoccupare capisco che per me sia chiaro dato che so dove vorrei andare a parare ma capisco anche che io sia abbastanza negato nell'esporlo. Ora vedo di fare un esempio

    DATA--------PRESENZA-----
    07-12-2008 2
    08-12-2008 2
    09-12-2008 2
    10-12-2008 2
    11-12-2008 1
    12-12-2008 1
    .
    .
    15-12-2008 1
    11-10-2008 1
    12-10-2008 1
    13-10-2008 1
    ...personalmente non mi è ancora chiaro se ti serve il numero di presenze
    per ogni giorno di un periodo scelto a piacere

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    19
    Si in realtà vorrei sapere per ogni giorno, nell'arco di un mese, quante persone ci sono in quel dato giorno.

    In maniera tale da potermi tirar fuori un grafico delle presenze per ogni giorno in un certo mese.

    Volevo tirarmi fuori la tabella che ti ho scritto nell'esempio sopra per poter selezionare meglio il periodo. Se sai però fare la cosa a partire dalla tabella che ti ho scritto nel primo post la cosa è più che ben accetta. Io purtroppo non ci cavo le gambe

  8. #8
    che versione di sql server ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    19
    Originariamente inviato da sspintux
    che versione di sql server ?
    2005

  10. #10
    quesito interessante, ne farò un articolo

    1. registrati una funzione come questa (cfr: http://www.sqlservercentral.com/arti...ulation/61822/)

    codice:
    CREATE FUNCTION dbo.GetNumbers
       (
       @Start BIGINT,
       @End BIGINT
       )
       RETURNS @ret TABLE(Number BIGINT)
    
    AS
       BEGIN
          WITH
             L0 AS (SELECT 1 AS C UNION ALL SELECT 1), --2 rows
             L1 AS (SELECT 1 AS C FROM L0 AS A, L0 AS B),--4 rows
             L2 AS (SELECT 1 AS C FROM L1 AS A, L1 AS B),--16 rows
             L3 AS (SELECT 1 AS C FROM L2 AS A, L2 AS B),--256 rows
             L4 AS (SELECT 1 AS C FROM L3 AS A, L3 AS B),--65536 rows
             L5 AS (SELECT 1 AS C FROM L4 AS A, L4 AS B),--4294967296 rows
             num AS (SELECT ROW_NUMBER() OVER(ORDER BY C) AS N FROM L5)
    
             INSERT INTO @ret(Number) 
             SELECT N FROM NUM WHERE N BETWEEN @Start AND @End
    
          RETURN
    
       END
    poi usala così (questa è roba mia )

    codice:
    SELECT DataReg, COUNT (*) FROM (
       SELECT 
          dataIn + Number-1 AS DataReg
       FROM 
          iscrizioni CROSS APPLY dbo.GetNumbers(1, datediff(day,iscrizioni.datain,iscrizioni.dataout)+1)
       ) tbl GROUP BY DataReg
    ovviamente questa è generica, puoi aggiungere parametri di ricerca, oppure usarla per creare una tabella di statistiche

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.