Ich versuche, eine ANOVA F-Test gespeicherte Prozedur in SQL Server zu erstellen (rein aus konzeptioneller Sicht? - Ist es überhaupt möglich)SQL Server - eine dynamische Menge von Variablen Deklarieren (ANOVA)
Das, was ich habe am schwierigsten ist es, eine nicht spezifizierte Menge von Variablen zu deklarieren. Ich möchte, dass mein Benutzer eine unbestimmte Anzahl von Spalten angeben kann, um den Test durchzuführen. Hier ist, wie mein Proc ist so weit eingerichtet:
CREATE PROCEDURE dbo.ANOVA
@ColumnList nvarchar(MAX),
@table nvarchar(MAX),
@null varchar(5) = 'eq'
AS
BEGIN
CREATE TABLE #columns (col varchar(250))
INSERT INTO #columns SELECT ItemValue FROM dbo.SplitList(@ColumnList, ',')
--SplitList is a table-valued function that splits a comma delimited list into a table.
DECLARE @NumVars int, @i int = 0, @TotMean float, @SQL nvarchar(MAX)
SELECT @NumVars = COUNT(*) FROM #columns
END
Dies ist nur das Skelett, das ich bisher habe. In meinen Augen habe ich zwei Möglichkeiten, dies zu erreichen.
Verwenden der dynamische SQL-Variablen zu deklarieren und das ganze ANOVA Verfahren in einer dynamischen SQL-Anweisung tun:
SELECT @SQL =
'WHILE ' + CAST(@i AS varchar(50)) + ' < ' + CAST(@NumVars AS varchar) + '
BEGIN
DECLARE @a' + CAST(@i AS varchar(5)) + ' varchar(50)
DECLARE @a' + CAST(@i AS varchar(5)) + 'mean varchar(50)
@i = @1 +1
END
/* ANOVA stuff goes here */'
EXEC (@SQL)
oder verwenden Sie dynamische SQL-Variablen in eine Tabelle zu erklären und von dort mit ihnen arbeiten:
IF OBJECT_ID('tempdb..#vars') IS NOT NULL
DROP TABLE #vars
CREATE TABLE #vars (vars varchar(250))
SELECT @SQL =
'WHILE ' + CAST(@i AS varchar(50)) + ' < ' + CAST(@NumVars AS varchar) + '
BEGIN
INSERT INTO #vars VALUES(''@a' + @i +''')
@i = @i + 1
END
'
EXEC (@SQL)
--Declare means, do ANOVA stuff
Ich fühle mich wie dieser Teil getan wird der schwierigste Teil der Durchführung der ANOVA-Verfahren sein wird. Ich habe bereits 1-Probe und 2-Probe T-Tests gemacht und ich fühlte mich wie ANOVA der nächste Schritt war.
Ich suche nicht für euch, das ganze Problem für mich zu lösen, nur um loszulegen und vielleicht einige Vorschläge, wie man mit diesen Variablen arbeiten
'Nicht spezifizierter Betrag': Warum verwenden Sie keine * Tabelle * dafür? –
Die unbestimmte Anzahl von Variablen in eine Tabelle zu setzen scheint mir die offensichtliche Lösung zu sein. –
Ja, aber wie würden Sie dann mit den Variablen in der Tabelle arbeiten, wenn Sie ihre Namen nicht kennen? – Chythe