2017-02-05 2 views
-4
DECLARE @Sample TABLE(@x float, @y float) 

SET @x = SELECT [Return] x 
     FROM [return] 
     WHERE YM BETWEEN 8801 AND 8901 
      AND Radif = 2 

SET @y = SELECT [Return] y 
     FROM [return] 
     WHERE YM BETWEEN 8801 AND 8901 
      AND Radif = 2 

;WITH cteSource(x, xAvg, y, yAvg, n) AS 
(
    SELECT 
     1E * x, 
     AVG(1E * x) OVER (PARTITION BY (SELECT NULL)), 
     1E * y, 
     AVG(1E * y) OVER (PARTITION BY (SELECT NULL)), 
     COUNT(*) OVER (PARTITION BY (SELECT NULL)) 
    FROM  
     @Sample 
) 
SELECT 
    SUM((x - xAvg) *(y - yAvg))/MAX(n) AS [COVAR(x,y)] 
FROM 
    cteSource 
+0

Какая у него ошибка? Что вы пытаетесь достичь? – EJoshuaS

ответ

2

У него, вероятно, несколько ошибок. Но, начиная с первых трех линий не делает никакого смысла:

DECLARE @Sample table(@x float , @y float) 
     set @x = SELECT [Return]x FROM [return] where YM between 8801 and 8901 and Radif=2 
     set @y = SELECT [Return]y FROM [return] where YM between 8801 and 8901 and Radif=2; 

Ближайший я могу догадаться, вы хотите что-то вроде этого:.

DECLARE @Sample table(x float, y float); 
INSERT INTO @Sample(x, y) 
    SELECT x, y 
    FROM [return] 
    WHERE YM between 8801 and 8901 and Radif = 2; 

(Это не может быть то, что вы хотите, это всего лишь предположим.)

Первые три строки имеют так много ошибок, что мой лучший совет - раскрасить кодировку T-SQL и синтаксис SQL.

Смежные вопросы