我有一個表,看起來像這樣:選擇所有行,所有行的平均價格,其中客戶id = X
[invoice_lines]
ID(INT),客戶ID(INT) ,價格(int),產品名稱(文本)
我想查詢此表,並提取所有行。但我也想用customerid = customerid提取所有行的平均價格。
因此,可以說我有了這些值一行:
ID(1),客戶ID(134),價格(125),產品名稱(互聯網)
我想提取行,但我也想要一個列,其中包含所有行的客戶均價134。
任何指針? :)
我有一個表,看起來像這樣:選擇所有行,所有行的平均價格,其中客戶id = X
[invoice_lines]
ID(INT),客戶ID(INT) ,價格(int),產品名稱(文本)
我想查詢此表,並提取所有行。但我也想用customerid = customerid提取所有行的平均價格。
因此,可以說我有了這些值一行:
ID(1),客戶ID(134),價格(125),產品名稱(互聯網)
我想提取行,但我也想要一個列,其中包含所有行的客戶均價134。
任何指針? :)
DECLARE @id INT
SET @id = 1
SELECT id,
customerid,
price,
productname,
(
SELECT AVG(price)
FROM invoice_lines i
WHERE i.customerid = o.customerid
)AS avgprice
FROM invoice_lines o
WHERE o.id = @id
SELECT id, customerid, price, productname,
AVG(price) OVER (PARTITION BY customerid) AS avg_price
from invoice_lines
我想你需要一個cte的幫助才能正確使用它。我在我的答案中有一個演示,對此進行測試。如果你過濾了id,那麼結果是錯誤的。 – 2015-03-19 08:11:47
我想你應該寫'AVG(價格* 1.00)',否則結果將舍入爲整數 – 2015-03-19 08:12:38
一些樣本數據最終希望的結果,請! – jarlh 2015-03-19 08:00:36