Domanda

Ho un campo DateTime in una tabella chiamata dbo.Traffic

Sto cercando di aggregare i dati del traffico di giorno.Sto pianificando di creare una vista schemabound e aggiungendo un indice.

CREATE VIEW [dbo].[vwTraffic] WITH SCHEMABINDING AS

SELECT  CONVERT(date, CreateDate) as CreateDate, Circuit, Fuseaction,     
   COUNT(CreateDate) AS activity
FROM    dbo.Traffic WITH (NOLOCK)
GROUP BY CONVERT(date, CreateDate), Circuit, Fuseaction
.

Nella tabella di base, creare la creazione non è nullabile.Tuttavia, non appena creo una vista e lo convertono in una data, diventa nullabile.

Inserisci Descrizione dell'immagine qui

È stato utile?

Soluzione

Questo è a causa di come le colonne calcolate si comportano in termini di nullabilità. Controllalo in qui su MSDN :

.

Il motore del database determina automaticamente la nullabilità delle colonne calcolate in base alle espressioni utilizzate. Il risultato della maggior parte delle espressioni è considerato nullabile anche se sono presenti solo colonne non riservabili, poiché possibili sottofoni o overflow produrranno anche risultati nullo. Utilizzare la funzione ColumnProperty con la proprietà consente di indagare sulla nullabilità di qualsiasi colonna calcolata in una tabella. Un'espressione che è nullabile può essere trasformata in uno non pignorable specificando isndull (check_expression, costante), in cui la costante è un valore non negativo sostituito per qualsiasi risultato null .

Puoi usarlo come il tuo CreateDate. Non devi preoccuparti del valore costante come non dovresti mai avere NULL:

ISNULL(CONVERT(date, CreateDate),0) as CreateDate
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top