문제

dbo.Traffic

라는 테이블에 DateTime 필드가 있습니다.

트래픽 데이터를 일별로 집계하려고합니다.Schemabound보기를 만들고 색인을 추가 할 계획입니다.

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는 nullable이 아닙니다.그러나보기를 만들고 그것을 날짜로 변환하는 즉시, 괜찮아 질 수 있습니다.

여기에 이미지 설명

도움이 되었습니까?

해결책

이는 계산 된 열이 Nullability에서 작동하는 방법 때문입니다. MSDN :

에서 확인하십시오.

데이터베이스 엔진은 사용 된 표현식을 기반으로 계산 된 열의 nullability를 자동으로 결정합니다. 대부분의 표현식의 결과는 가능한 한 해저 플로우 또는 오버 플로우가 NULL의 결과를 생성하기 때문에 아닌 컬럼 만 존재하더라도 무효로 간주됩니다. ColumnProperty 함수를 allowNull 속성과 함께 사용하여 테이블의 계산 된 열의 nullability를 조사하십시오. isnull (check_expression, constant)을 지정하여 nullable이 불가능한 표현식을 지정할 수없는 표현식으로 변환 할 수 있습니다. 여기서 상수는 널 결과 에 대해 대체되지 않은 값이 아닌 값입니다.

이를 CreateDate로 사용할 수 있습니다. NULL가 아닌 경우 일정한 가치에 대해 걱정할 필요가 없습니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top