Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    Select che raggruppa non mi mostra i dati

    Ciao, ho una query che funziona bene, mi ritorna i dati che desidero.
    Volevo implementare questa query in modo da farmi ritornare in una colonna, un array di chiavi. Ecco la query:
    codice:
       
    SELECT     
    NumeroPratiche = count(*),     
    Struttura =  (SELECT Struttura.nome FROM Struttura WHERE Struttura.guid = p1.strutturaId),     
    Agente = (SELECT Utente.nome + ' ' + Utente.cognome FROM Utente WHERE Utente.guid = p1.userPresaInCarico),     
       
    Valore = SUM     
                  (CASE     
                  WHEN p1.unitCost <> 12     
                  THEN (p1.unitCost * p1.numGiorni + isnull(Dettagli.TotDettagli,0))     
                  WHEN p1.unitCost = 12     
                  THEN (p1.unitCost + isnull(Dettagli.TotDettagli,0))     
                  END),     
    Dal = MIN(dataPresaInCarico),     
    Al = MAX(dataPresaInCarico)     
       
    FROM Pratica p1     
       
    outer apply(     
    SELECT     
    SUM(pd1.prodottoUnitCost * pd1.prodottoQta) TotDettagli     
    FROM praticaDettagli pd1     
    WHERE pd1.praticaId = p1.guid     
    ) Dettagli     
       
    WHERE     
    p1.status <> 0 AND p1.status <> 3     
    AND p1.strutturaId = '7a789940-93d1-462d-b5d6-f5c359b54cdf'   
       
    GROUP BY     
    p1.strutturaId , p1.userPresaInCarico   
    ORDER BY Dal ASC;
    ed ecco il risultato
    codice:
       
    2	StrutturaB	Pippo Pluto	24	2009-07-16 20:33:56.843	2009-07-16 20:38:26.547
    Praticamente vorrei farmi ritornare anche l'identificativo delle pratiche, senza sconvolgere il raggruppamento però.. quindi pensavo di creare un nuovo campo nella query dove all'interno ci avrei messo un array di interi, ad esempio rifacendomi al risultato della query di prima, il risultato con le modifiche alla query dovrebbe essere:

    codice:
       
    24577,8784	2	StrutturaB	Pippo Pluto	24	2009-07-16 20:33:56.843	2009-07-16 20:38:26.547
    Chi mi dà una mano per modificare questa query? Thanx
    Voglio l'alt+s anche per FF

  2. #2
    ciao bello, ben tornato. non ti offendi - vero - se ti dico che non ho capito niente...

  3. #3
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    ciao caro, figurati, non dovrei essere io ad offendermi
    Cmq, provo a spiegarmi meglio magari..
    la prima query mi ritorna dei dati raggruppati, bene, ora mi serve un altro campo "p1.guid" che essendo univoco non posso raggruppare, altrimenti non mi servirebbe + a niente il raggruppamento. Quello che volevo fare, sempre se si può fare, è creare un altro campo di risultato nel quale mettere un array di p1.guid.
    Esempio di risultato che vorrei ottenere (lo stesso di prima solo che adesso uso il guid)
    codice:
    435f9940-93d1-462d-b5d6-f5c359b54cdf,89b557740-93d1-462d-b5d6-f5c359b54cdf'      	2	StrutturaB	Pippo Pluto	24	2009-07-16 20:33:56.843	2009-07-16 20:38:26.547
    Ecco tutto
    Voglio l'alt+s anche per FF

  4. #4
    lasciati ispirare da questa query (io la uso molto in M$SQL)

    codice:
    DECLARE @TableJoin varchar(max)
    
    SELECT 
       @TableJoin = COALESCE(@TableJoin + ', ', '') + table.column
    FROM 
       table
    WHERE
       ... quello che vuoi

  5. #5
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    adesso sono io che non capisco.. COALESCE non equivale a CASE ?
    i miei dati sono raggruppati, mi servirebbe praticamente una subquery che mi restituisca un solo valore come se fosse un array, e non mettere questo valore tra quelli in group by
    Voglio l'alt+s anche per FF

  6. #6
    quella è una query che restituisce in un'unica stringa i valori di colonna. quindi secondo me dovresti farti una funzione con dentro quella query (adattata al tuo caso, che ti riporti cioè solo i p1.guid) e poi richiamare la funzione nella tua query

  7. #7
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    prendiamo solo la query
    codice:
    DECLARE @TableJoin varchar(100)
    
    SELECT 
      @TableJoin = COALESCE(@TableJoin + ', ', '') + pratica.stanza
    FROM pratica
    così com'è non mi restituisce niente.. i comandi sono stati completati mi dice, ma non mi restituisce qualcosa..
    così:
    codice:
    DECLARE @TableJoin varchar(100)
    
    SELECT 
    COALESCE(@TableJoin + ', ', '') + pratica.stanza
    FROM pratica
    mi restituice qualcosa.. ma sono semplicemente i record che avrei potuto farmi restituire con una semplice select.. insomma, non vedo un solo record con i valori separati da virgola come mi aspettavo..

    Boh.. :master:
    Voglio l'alt+s anche per FF

  8. #8
    codice:
    DECLARE @TableJoin varchar(100)
    
    SELECT 
      @TableJoin = COALESCE(@TableJoin + ', ', '') + pratica.stanza
    FROM pratica
    
    SELECT @TableJoin

  9. #9
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    me ne sono reso conto dopo
    Voglio l'alt+s anche per FF

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.