Frage

Ich versuche, einige SQL zu generieren, die verwendet wird, einige Endergebnisse zu berechnen. -> denke, dass Kinder in der Schule und deren Ende des Jahres Partituren

Ich wollte etwa 5 oder so Scalar UDF haben, dass einige einfache Werte annehmen (z. B. aktuelle Punktzahl, subjectid, was auch immer) und dann einen Dezimalwert ausspucken.

zB.

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

Die Logik hat nur Mathematik. Nein wählen xxx aus der Tabelle yyy etc ..

Also, das ist ok in Bezug auf Leistung zu tun?

War es hilfreich?

Lösung

Klar, kein Problem - Leistung wird fast das gleiche sein wie bei, wenn Sie es bei jedem SELECT Inline tun würden. Ich glaube nicht, das überhaupt kein Problem sein sollte - ganz im Gegenteil, scheint wie eine wirklich gute Idee, diese in ein UDF setzen! (Halten Sie Ihren T-SQL-Code sauber und einfach).

Marc

Andere Tipps

Ja, es ist eine schlechte Idee, weil Sie alle Ihre Punktzahl Gewichte in einer Tabelle setzen sollen, und führen Sie einen Join das Ergebnis zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top