2014-12-04 69 views
1

試圖合併/匹配列到同一個表中的另一列匹配欄到列SQL

基本上我希望ShareID屬於ShareCategory。所以然後我可以匹配的類別由平均值和和從其CATEGORY

enter image description here

輸出需要顯示shareID,共享名,ShareCategorie顯示最高的份額。但是隻有擁有ShareSellPrice的共享名在他們自己的分類中高於平均值。

使用Piyush在此處建議的「加入」命令。獲取512 msg。 代碼我寫是這樣的:

select ray.ShareID, ray.ShareName, AVG(ray.ShareSellPrice) 
from share_tbl 
join share_tbl as ray 
on dbo.share_tbl.ShareID = ray.ShareCategory 
group by ray.ShareSellPrice, ray.ShareID, ray.ShareName 
having ray.ShareSellPrice> 
(
    select ray.ShareSellPrice 
    from share_tbl 

) 
+0

您的問題尚不清楚,請詳細說明併發布期望的結果。 – potashin 2014-12-04 02:53:08

+0

你想要的輸出是什麼? – HaveNoDisplayName 2014-12-04 03:03:59

+0

輸出需要顯示shareID,ShareNAme,ShareCategorie。但是隻有擁有ShareSellPrice的共享名在他們自己的分類中高於平均值。 – Imhere 2014-12-04 03:56:26

回答

1

你可以得到每個類別的平均價格在子查詢中,並與類別列主表連接,並比較了股價與平均價格,從而獲得所需結果

select s.shareId, s.shareName, s.shareCategory, T.AvgPrice 
from share_tbl s 
join (select shareCategory, avg(ShareSellPrice) as AvgPrice 
     from share_tbl 
     group by shareCategory 
    )T 
on s.shareCategory = T.shareCategory 
and s.ShareSellPrice >= T.AvgPrice 
+0

謝謝!但是這會從整個ShareSellPrice列中返回AVG,但在這種情況下,我需要從當前類別返回高於AVG的AVG份額。 e.q第一類我有兩個SHARE,我需要在第一類中顯示高於AVG的人。 – Imhere 2014-12-04 04:16:11

+0

@RaySligo,這將返回每個類別中高於平均水平的所有分數。所以在第一個類別中,它將只返回共享ID 1.子查詢在共享類別上進行平均,而不是在整個表值上。 – radar 2014-12-04 04:19:56

+0

你是對的myfirnd!它不顯示ShareID 5 tho。這是類別中唯一的份額。有沒有辦法在表格中顯示? – Imhere 2014-12-04 04:26:30