문제

나는 최종 점수를 계산하는 데 사용되는 SQL을 생성하려고 노력하고 있습니다.> 학교에서 아이들을 생각하고 연말 점수를 생각합니다.

나는 약 5 정도 정도의 스칼라 UDF를 가지고 있었고, 간단한 값 (예 : 현재 점수, 주제 등)을 받아들이고 소수점 값을 뱉어 냈습니다.

예를 들어.

CREATE FUNCTION [dbo].[GetRatingModifier]
(
    @ExamScore DECIMAL(6, 2),
    @Project1Score DECIMAL(6, 2),
    @Project1Score DECIMAL(6, 2),
    @Project1Score DECIMAL(6, 2),
    @SubjectTypeId TINYINT
)
RETURNS DECIMAL(8,5)
AS
BEGIN
    DECLARE @Score DECIMAL(8,5)

    SELECT @Score = (CASE @Project1Score
                     WHEN 1 THEN 10
                     WHEN 2 THEN 12.4
                      ....) +
                    (CASE blah.. u get the drift)..
    RETURN @Score
END

논리에는 수학 만 있습니다. 테이블 yyy 등에서 xxx를 선택하지 않음 ..

그렇다면 이것이 공연과 관련하여 괜찮습니까?

도움이 되었습니까?

해결책

물론, 문제 없음 - 성능은 모든 선택마다 인라인을 할 때와 거의 동일합니다. 나는 이것이 전혀 문제가 될 것이라고 생각하지 않습니다. 반대로 UDF에 넣는 것은 정말 좋은 생각처럼 보입니다! (T-SQL 코드를 깨끗하고 간단하게 유지하려면).

마크

다른 팁

예, 모든 점수 가중치를 테이블에 넣고 결과를 얻기 위해 가입을 수행해야하기 때문에 나쁜 생각입니다.

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