質問

このようなT-SQLを使用してインデックスビューを作成したい:

    Select
   Table1_ID,
   cast(CONVERT(varchar(8),
   t2.Object_CreationDate, 112)AS DateTime) as Object_CreationDate ,
   Count_BIG(*) as ObjectTotalCount 
   from
       [dbo].Table2 t2 inner join [dbo].Table1 t1 on ...   
   Group BY
       Table1_ID, CONVERT(varchar(8), t2.Object_CreationDate, 112))

作る必要があります グループby のみによって datepart 列の Object_CreationDate (タイプ DateTime2 ).

また、列にインデックスを設定したいと思います Theme_IdObject_CreationDate 派生ビューで。
使用する場合 cast(CONVERT(varchar(8), m.Mention_CreationDate, 112)AS DateTime) 選択 - この列のインデックスの問題が発生します。この列のため(Object_CreationDate)決定論的ではありません。

問題を解決することができるのだろうか。

役に立ちましたか?

解決

交換 ...

CONVERT(varchar(8), t2.Object_CreationDate, 112))

... と

DATEADD(day, DATEDIFF(day, 0, t2.Object_CreationDate), 0)
--OR
CAST(t2.Object_CreationDate AS date)

2番目の形式はSQL Server 2008+のみで、1つ目はより一般的です

これにより、中間ロケールに依存するDateTimeフォーマットなしで、日付/DateTime DateTypeドメインのDateTime値から時間コンポーネントが削除されます

これらの答えを参照してください: 12つ(コメント)

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