我試圖創建SQL Server中ANOVA F-Test存儲過程(從概念的角度來看純粹的 - 它甚至有可能)SQL服務器 - 聲明的變量(ANOVA)動態量
事情我有最難的是聲明一個未指定數量的變量。我希望我的用戶能夠指定未確定數量的列來執行測試。以下是我的過程如何設置到目前爲止:
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
這只是我迄今爲止的骨架。在我看來,我有兩種方法來解決這個問題。
使用動態SQL聲明變量,做一個動態的SQL語句整個ANOVA過程:
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)
或使用動態SQL變量聲明爲一個表,並從那裏與他們的工作:
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
我覺得完成這部分將是做ANOVA過程中最困難的部分。我已經完成了1樣本和2樣本t檢驗,我覺得下一步是方差分析。
我不找你們解決整個問題對我來說,剛上手以及如何使用這些變量的工作,也許一些建議
'未指定的數額':爲什麼你不使用*表格*? –
將未指定數量的變量放入表中似乎對我來說是顯而易見的解決方案。 –
是的,但是如果你不知道他們的名字,那麼你將如何處理表中的變量? – Chythe