Domanda

Io uso la seguente istruzione per creare un calcolo percentuale in una vista:

round (((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100), 0) AS PercentageAdvertising

In sostanza, divido il numero di risposte a una certa domanda (in questo caso, è qualcosa considerato pubblicità) per il numero totale di risposte.

Alla fine, ho colonne che mostrano le percentuali per ciascuna delle cinque possibili risposte al sondaggio ( "E 'la pubblicità?", "E' noioso?", Ecc.).

Questo funziona perfettamente, ma c'è una cosa che vorrei modificare. Quando un tipo di risposta (ad esempio, la pubblicità) non ha alcun voto, il mio campo calcolato riceve un valore NULL.

Quando si definisce mio punto di vista, come posso specificare un valore predefinito di 0?

Grazie.

È stato utile?

Soluzione

Hai bisogno di una coalesce in là. Seleziona il primo argomento non NULL, quindi è necessario qualcosa di simile:

coalesce(
    round(
        ((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
        ,0)
    ,0)
    AS PercentageAdvertising

Poi, quando il risultato del round è NULL, che vi darà zero invece.

Altri suggerimenti

COALESCE è l'approccio preferito , perché è un modo standard ANSI di movimentazione valutazione quando una parametro è nullo. Essendo ANSI, la stessa sintassi è supportato su Oracle, SQL Server, Postgres, ecc, rendendo più facile la query alla porta tra i database, se necessario.

COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)

IFNULL è la sintassi specifica MySQL:

IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top