0

내가 테이블 내용을 가지고 동일한 SQL 서버 테이블 컬럼 인 화학식 변수 :화학식을 갖는 컬럼의 값을 계산하는 방법이 그림에 나타낸 바와 같이

screenshot

수식 항목이 포함 수식의 변수로 열 이름.

I는 수식 항목에 주어진 식을 동적으로 계산 기초 할 것이다 각 emp_id, Tsk_idprocessed date 대한 대응 계산 열 점수를 얻을 I가 시도

임시 테이블 밀어 애 쓰고 성공한 아래의 코드를 사용하여 커서 내에서 동적 SQL로이를 달성하십시오. 누구나 CTE 등을 사용하여 더 나은 방법을 제안 할 수 있습니까?

DECLARE @EMP_ID nVARCHAR(255) 
DECLARE @TSK_ID nVARCHAR(255) 
DECLARE @PROCESSEDDATE nVARCHAR(255) 
DECLARE @SQLCMD nVARCHAR(max) 
DECLARE @SQLTEXT nvarchar(max) 

DECLARE db_cursor CURSOR FOR 

SELECT EMP_ID,TSK_ID,PROCESSEDDATE from dbo.[Formula_Cal] group by EMP_ID,TSK_ID,PROCESSEDDATE 


OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @EMP_ID,@TSK_ID,@PROCESSEDDATE 

WHILE @@FETCH_STATUS = 0 

BEGIN 

     Set @SQLTEXT = (Select formula from dbo.[Formula_Cal] where [email protected]_ID and TSK_ID [email protected]_ID and [email protected]) 
     Set @SQLCMD ='select emp_id,TSK_ID,convert(decimal(18,2),(' [email protected]+ ')) As Score FROM [Formula_Cal] where TSK_ID = '[email protected]_ID+' and EMP_ID = '[email protected]_ID 
     --Select @SQLTEXT 
     --Select @SQLCMD 
     insert into dbo.TMP_ACHSCR(emp_id,TSK_id,Score) 
     Exec sp_executesql @SQLCMD 

     FETCH NEXT FROM db_cursor INTO @EMP_ID,@TSK_ID,@PROCESSEDDATE 
END 



CLOSE db_cursor 
DEALLOCATE db_cursor 
+1

codereview.stackexchange.com – scsimon

+0

여기서 커서가 필요하지는 않습니다. 하나의 동적 SQL 쿼리에서 모든 것을 선택할 수 있습니다. –

답변

0

아니요. 최소한의 재 작성만으로 가장 쉬운 방법입니다. 수식을 함수로 다시 작성하여 액세스 할 수 있습니다.

+0

감사합니다 Deadheep, 여기에 정의 된 수식 집합이 없지만 모든 행마다 다를 수 있습니다. 그래서 함수를 작성하는 공식은 하드 코딩을 요구하는 수식의 고정 세트에만 국한 될 것이라고 생각합니다. 목표는 계산을 동적으로 수행하는 것입니다. – Bineet

관련 문제