2013-04-15 2 views
0

내가 SQL 서버 2012 익스프레스에 자동 계산 필드를 추가하기 위해 노력하고있어이 프로젝트 완료의 %를 저장하는 날짜의 비율 (SQL 서버)를 계산 :사용하여 날짜 차이를 계산하여

ALTER TABLE dbo.projects 
ADD PercentageCompleted AS (select COUNT(*) FROM projects WHERE project_finish > project_start) * 100/COUNT(*) 

Msg 1046, Level 15, State 1, Line 2 
Subqueries are not allowed in this context. Only scalar expressions are allowed. 

내가 잘못 뭐하는 거지 :

는하지만이 오류는 무엇입니까?

답변

0

하더라도, 그것은 당신이 caculated 컬럼으로 가지고 싶은 것이 뭔가 어쨌든되지 않습니다 :

  1. 가 각 행에 같은 값이됩니다은
  2. 전체 테이블은

당신은 응용 프로그램의 비즈니스 논리에 심지어 더 나은 stored procedure 또는 사용자 defined function instead.Or에서이 일을 고려해야를 업데이트/모든 삽입 후 업데이트 될 필요가있다

0

나는 그렇게 생각하지 않습니다. 업데이트 진술의 일부로 파악하거나 트리거하는 트리거를 작성할 수 있습니다. 이 (그렇지 않은) 가능할 것이다

+0

다른 컬럼을 만드는 대신 SQLDataSource를 계산하여 일부 함수를 사용하여 계산할 수 있습니까? – Brian

0

"percentCompleted"를 프로젝트 데이터와 동일한 테이블에 중복 된 열 값으로 저장 하시겠습니까?

데이터가 중복 될 수 있으므로 권장하지 않습니다.

당신이, 중복 데이터에 대한 관심이 같은 단계를 분리하는 것을 시도하지 않는 경우 :

ALTER TABLE dbo.projects ADD PercentageCompleted decimal(2,2)에게 알려줄 또한 VARCHAR 또는 문자

declare @percentageVariable decimal(2,2)

select @percentageVariable = (select count(*) from projects where Project_finish > project_start)/(select count(*) from projects)로 저장할 수 - 완료/비율로 비율을 받아야합니다.

update projects 
set PercentageCompleted = @percentageVariable 

이렇게하면 10 진수 값을 얻을 수 있습니다. 그 테이블에서 원하는 경우 % + PercentageCompleted * 100

관련 문제