我的数据在一列中多次返回相同的值,我只想包含第一个值,甚至是平均值,因为它们都是相同的值。该组本身可能有3行付款,但付款是相同的。我只想显示三行,但只有一行付款。
在下面的数据中,我想添加另一列平均Rich和Bob的值,并在Rich和Bob的顶行输入数量。
示例数据:
1 Rich 300
2 Rich 300
3 Rich 300
4 Bob 250
5 Bob 250
答案 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
但是 - 说实话 - 这绝对不是应该如何做的......