2015-09-27 34 views
1

我有一個數據在一列中多次返回相同的值,我只想包括第一個值或者甚至是平均值,因爲它們都是相同的值。該組本身可能有3行付款,但付款是相同的。我只是想要顯示三行,但只有一個付款在自己的專欄。自己一行的平均數據

在下面的數據中,我想添加另一列,平均Rich和Bob的值,並輸入Rich和Bob的頂部行數。

樣本數據:

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

你嘗試過這麼遠嗎?請提供樣本日期和預期產出。 **請**在此處使用Stack Overflow的格式化可能性! – Shnugo

+1

還有一點需要說明的是:如果我正確地理解了你,這對於你的應用程序而言是比數據庫更重要的工作......並且:請說明你的SQL Server版本...... – Shnugo

+0

由於你添加了一個全新的列,你認爲第2,3和5行的價值是什麼? –

回答

1

你可能想是這樣的:

就在這個粘貼到一個空查詢窗口和exectue。適應你的需要......

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 

但是 - 說實話 - 那是絕對沒有辦法的辦法應如何做?

+0

謝謝我會試試這個 –

+0

@DominickLaDuca,你試過這個嗎?它有用嗎?如果是,請投票並標記爲已接受,thx! – Shnugo