Vorrei avere una domanda sull'uso di null.Tipo di dati di operando tipo void non valido per l'operatore di somma
Se corro questa query
SELECT SUM(x)
FROM (SELECT NULL AS x) AS DerivedTable
ottengo il messaggio di errore
"tipo void tipo di dati operando non è valido per l'operatore somma."
Tuttavia, se creo una tabella con un campo nullable e la utilizzo all'interno della somma aggregata, ignorerà il valore NULL e sostanzialmente sommerà tutto il resto dei record.
CREATE TABLE #temp1(x int)
insert into #temp values (NULL),(3),(5)
SELECT SUM(x) FROM #temp1
risultato è 8.
C'è una spiegazione logica di questo? Sarebbe a causa del tipo di dati di NULL non è stato dichiarato nella query con la tabella derivata ma è stato dichiarato con la tabella temporanea? Inoltre, mi piacerebbe davvero sapere se esiste un modo per produrre questo messaggio di errore quando viene eseguito da una tabella o da una tabella derivata, proprio come il secondo esempio # temp1. Qualsiasi esempio che produce questo messaggio di errore quando viene eseguito da una tabella o un'espressione di tabella è altamente benvenuto.
Grazie a tutti
Grazie Lieven, Pensa a qualsiasi situazione in cui questo messaggio di errore viene generato tramite una tabella o un'espressione di tabella, proprio come il tuo secondo esempio ma con un errore. – user2155565