Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema con una UNION ALL

    Ciao!
    Ho 2 query che mi estraggono dei dati, raggruppati per data; la prima estrae i dati in una fascia oraria lavorativa, mentre l'altra prende la fascia non lavorativa.
    Adesso ho bisogno di avere un'estrazione che mi metta insieme questi dati, distinguendo però il campo con le somme lavorative da quello con le somme non lavorative... in modo da visualizzare colori diversi quando scriverò i dati a video. Pensavo di usare una UNION ma non riesco a fare distinzione tra i campi... avete suggerimenti?

    Query 1:

    codice:
    SELECT CONVERT(CHAR(10), DateTimeCall, 120) as Data,
    Count(CONVERT(CHAR(10), DateTimeCall, 120)) as Chiamate
    FROM Chiamate
    WHERE ...condizioni...
    GROUP BY CONVERT(CHAR(10), DateTimeCall, 120)
    Query 2:

    codice:
    SELECT CONVERT(CHAR(10), DateTimeCall, 120) as DataPausa,
    Count(CONVERT(CHAR(10), DateTimeCall, 120)) as ChiamatePausa
    FROM Chiamate
    WHERE ...condizioni...
    GROUP BY CONVERT(CHAR(10), DateTimeCall, 120)

    La cosa che non riesco a fare è questa:

    codice:
    SELECT Data, DataPausa, Chiamate, ChiamatePausa
    FROM
    (
    SELECT CONVERT(CHAR(10), DateTimeCall, 120) as Data,
    Count(CONVERT(CHAR(10), DateTimeCall, 120)) as Chiamate
    FROM Chiamate
    WHERE ...condizioni...
    GROUP BY CONVERT(CHAR(10), DateTimeCall, 120)
    
    UNION ALL
    
    SELECT CONVERT(CHAR(10), DateTimeCall, 120) as DataPausa,
    Count(CONVERT(CHAR(10), DateTimeCall, 120)) as ChiamatePausa
    FROM Chiamate
    WHERE ...condizioni...
    GROUP BY CONVERT(CHAR(10), DateTimeCall, 120)
    
    )

    In questo modo vorrei poi aprire un recordset, e quando lo leggo scrivo Data e Chiamate se sono valorizzati, se no prendo il valore contenuto in DataPausa e ChiamatePausa...
    Pensavo di fare così per evitare di usare recordset separati visto che nel caso specifico su cui sto lavorando, significa effettivamente creare 4 recordset in più

  2. #2
    pensa a qualcosa del genere

    codice:
    SELECT TIPO, campo1a, campo2a, campo1b, campo2b FROM
    (
    SELECT 'A' as tipo, campo1a, campo2a, '' as campo1b, '' as campo2b FROM ...
    UNION ALL
    SELECT 'B' as tipo, '' as campo1a, '' as campo2a , campo1b, campo2b FROM ...
    )

  3. #3
    Ho seguito il tuo consiglio, però i risultati mi escono in questo modo:

    Tipo | Campo1a | Campo1b | Campo2a | Campo2b
    A | 10/07/2007 | (vuoto) | 15 | (vuoto)
    B | 10/07/2007 | (vuoto) | 1 | (vuoto)
    A | 11/07/2007 | (vuoto) | 4 | (vuoto)
    A | 12/07/2007 | (vuoto) | 9 | (vuoto)
    B | 12/07/2007 | (vuoto) | 22 | (vuoto)

    ecc...

    quindi mettere 4 campi è indifferente perchè scrive i valori solo in 2, e la distinzione mi viene rapppresentata dal campo TIPO

    a questo punto mi sa che elimino i 2 campi di troppo e tengo solo il TIPO come distinzione, poi me la giostro nel recordset per capire la data in cui sono e se ho 1 o più valori corrispondenti

  4. #4
    i campi vengono messi dove dici tu, il mio era volutamente SOLO un esempio

  5. #5
    Ho tolto il campo TIPO, rimanendo sul suggerimento che mi hai dato.
    Pensavo di trovarmi in una situazione diversa, di questo tipo:

    Campo1a | Campo1b | Campo2a | Campo2b
    10/07/2007 | 10/07/2007 | 15 | 1
    11/07/2007 | (vuoto) | 4 | (vuoto)
    12/07/2007 | 12/07/2007 | 9 | 22


    Ma invece non cambia nulla rispetto a prima.
    Non capisco come impostare la query per farla uscire in questo modo... mah...

    Grazie comunque del suggerimento perchè mi è ugualmente utile

  6. #6
    scusa, fai

    codice:
    SELECT * FROM
    (
    SELECT 'C' as tipo, campodata as data, campochiamata as chiamata, '' as datapausa, '' as chiamatapausa FROM ... WHERE condizionichiamata
    UNION
    SELECT 'P' as tipo, '' as data, '' as chiamata, campodata as datapausa, campochiamata as chiamatapausa FROM ... WHERE condizionichiamatapausa
    )
    cioè, i campi di partenza sono gli stessi, è dove finiscono che cambia...

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.