2014-11-24 34 views
0

我試圖在基於另一列計算的視圖內創建一個總和除以與該ID匹配的行數。 示例: 總共= Table.1 /(行,其中ID =相同)按行數除以ID所匹配的行數

視圖到目前爲止是:

Create View testview AS (
    SELECT t2.ID,t1.Sum1 FROM 
    Table1 t1 
    LEFT JOIN 
    Table2 t2 
    ON 
    t1.ID = t2.ID 
); 

下面是一個表例如:

+-------+---------+--------+ 
| T2.ID | T1.Sum1 | Total | 
+-------+---------+--------+ 
|  1 | 10.00 | 10.00 | 
|  2 | 15.00 | 15.00 | 
|  3 | 20.00 | 10.00 | 
|  3 | 20.00 | 10.00 | 
|  4 | 30.00 | 10.00 | 
|  4 | 30.00 | 10.00 | 
|  4 | 30.00 | 10.00 | 
+-------+---------+--------+ 

謝謝

回答

1

試試這個。使用Aggregate countWindow function得到的sum1計數在每ID,並用它來劃分sum1

CREATE TABLE #sum 
    (
    ID INT, 
    Sum1 NUMERIC(4, 2) 
) 

INSERT #sum 
VALUES (1,10.00), 
     (2,15.00), 
     (3,20.00), 
     (3,20.00), 
     (4,30.00), 
     (4,30.00), 
     (4,30.00) 

SELECT *, 
     Sum1/Count(id) 
       OVER (
        partition BY id) AS Total 
FROM #sum 

查看應該是這樣的。

CREATE VIEW testview 
AS 
    (SELECT t2.ID, 
      t1.Sum1, 
      t1.Sum1/Count(t2.id)OVER (partition BY id) AS Total 
    FROM Table1 t1 
      LEFT JOIN Table2 t2 
       ON t1.ID = t2.ID);