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