自己行中的平均数据

时间:2015-09-27 23:30:33

标签: sql-server

我的数据在一列中多次返回相同的值,我只想包含第一个值,甚至是平均值,因为它们都是相同的值。该组本身可能有3行付款,但付款是相同的。我只想显示三行,但只有一行付款。

在下面的数据中,我想添加另一列平均Rich和Bob的值,并在Rich和Bob的顶行输入数量。

示例数据:

1  Rich  300
2  Rich  300
3  Rich  300
4  Bob   250
5  Bob   250

1 个答案:

答案 0 :(得分:1)

你可能想要这样的东西:

只需将其粘贴到一个空的查询窗口即可。适应您的需求......

DECLARE @tbl TABLE(ID INT, PersonName VARCHAR(100),Amount DECIMAL(6,2))
INSERT INTO @tbl VALUES
 (1,'Rich',300)
,(2,'Rich',300)
,(3,'Rich',300)
,(4,'Bob',250)
,(5,'Bob',250);

WITH NumberedPerson AS
(
    SELECT tbl.*
          ,ROW_NUMBER() OVER(PARTITION BY PersonName ORDER BY ID) PersonID
          ,AVG(Amount) OVER(PARTITION BY PersonName) PersonAvg
    FROM @tbl AS tbl
)
SELECT *
     ,CASE WHEN PersonID=1 THEN PersonAvg ELSE NULL END AS AverageInFirstRow
FROM NumberedPerson
ORDER BY ID

但是 - 说实话 - 这绝对不是应该如何做的......