Sql server 除以与ID匹配的行数

Sql server 除以与ID匹配的行数,sql-server,Sql Server,我试图在视图中创建一个总和,该总和是根据另一列除以与ID匹配的行数计算的。 例子: 总计=表1/(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 | +-

我试图在视图中创建一个总和,该总和是根据另一列除以与ID匹配的行数计算的。 例子: 总计=表1/(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  |
+-------+---------+--------+

谢谢

试试这个。使用
Aggregate count
Window函数
获取每个
ID
sum1
的计数,并使用它除以
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);