+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 4 su 4

Discussione: riga su condizioni multipli

  1. #1
    aalesssio non è in linea Novello
    Post
    34

    riga su condizioni multipli

    Ciao a tutti,
    ho una tabella con 3 campi: nome cliente, tipo contratto e stato contratto.
    Ogni cliente può avere più contratti di tipo diverso (A e B) i quali possono essere (stato=) open o closed (O o C).
    Dunque vorrei scrivere una query che mi mostri i clienti che abbiano i contratti in stato open. Però nel caso siano aperti sia A e che B vorrei mostrare soltanto la riga con il contratto di tipo A (perchè ha più priorità).

    Esempio:
    PIPPO | A | O
    PIPPO | B | O
    CICCIO| A | O
    PEPPE | B | C
    RINO | B | O
    vorrei una query che mi mostri le seguenti righe:
    PIPPO | A | O
    CICCIO| A | O
    RINO | B | O

    ho provato ad utilizzare IIF ma non riesco proprio...

    grazie in anticipo!!

  2. #2
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    418
    Potresti selezionare tutti i clienti che hanno un contratto A aperto, e poi con [UNION ALL], accodare tutti i clienti che hanno un B aperto ma non un A aperto...

  3. #3
    aalesssio non è in linea Novello
    Post
    34
    Si, fin li ci sono.
    Ma come traduci in SQL la seconda parte:B open e A closed? Un semplice AND in WHERE ? In questo modo non mi pare che funzioni...

  4. #4
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    418
    Quote Originariamente inviato da aalesssio Visualizza il messaggio
    Ma come traduci in SQL la seconda parte:B open e A closed?
    codice:
    Select Codice, Tipo contratto, Stato contratto
    From Tabella
    Where Tipo contratto = A
        AND Stato contratto = O
    
    UNION ALL
    
    Select Codice, Tipo contratto, Stato contratto
    From Tabella
    Where Tipo contratto = B
        AND Stato contratto = O
        AND Codice NOT IN (Select Codice From Tabella Where Tipo contratto = A AND stato contratto = O)
    Ovviamente devi correggere i nomi dei campi...

    Forse a livello di prestazioni può andare meglio una CTE oppure sfruttare la funzione finestra ROW_NUMBER strutturando bene la clausola OVER.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi