質問

dbo.Traffic

という表にDATETIMEフィールドがあります。

私は日々の交通量データを集約しようとしています。スキーマビューの作成とインデックスの追加を計画しています。

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
.

基本テーブルのCreateDateはNULL可能ではありません。ただし、ビューを作成して日付に変換するとすぐに、それはNULL可能になります。

画像の入力ここで

役に立ちましたか?

解決

これは、計算列がヌル性の点でどのように振る舞うかのためです。 msdn

データベースエンジンは、使用されている式に基づいて、計算済み列のヌル性を自動的に決定します。必要なアンダーフローまたはオーバーフローはNULLの結果を生成するため、ノンライセット列のみが存在していてもほとんどの式の結果がヌル可能と見なされます。 ColumnProperty関数を使用して、AltiveNullプロパティを使用して、テーブル内の任意の計算列のヌル性を調べます。 innull(check_expression、定数)を指定することで、nullableの表現を非呼び出し可能なものに変えることができます。ここで、定数はヌル結果の代わりに置き換えられていません。

あなたのCreateDateとしてそれを使うことができます。 NULLが決してありませんので、定数の値を心配する必要はありません。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top