2014-01-12 112 views
0

對不起,如果標題有點混亂。但這就是我所面臨的。我正在運行的SQL查詢下面從GROUP BY SQL查詢中消除重複行

SELECT kodnegeri.KodNegeriText, kategorisukan.KategoriSukanText, COUNT(*) AS Total 
FROM association 
INNER JOIN kodnegeri ON association.KodNegeri = kodnegeri.KodNegeri 
INNER JOIN kategorisukan ON association.KodKategoriSukan = kategorisukan.KategoriSukan 
GROUP BY kodnegeri.KodNegeriText, kategorisukan.KategoriSukanText 

並且查詢返回如下表

KodNegeriText | KategoriSukanText | Total 
    Johor   | Sukan Kecergasan | 16 
    Johor   | Sukan Paralimpik | 1 
    Johor   | Sukan Prestasi.. | 227 
    Johor   | ...    | ... 
    Kedah   | Sukan Kecergasan | 14 
    Kedah   | Sukan Paralimpik | 8 
    Kedah   | ...    | ... 

正如你可以看到KodNegeriText下,有重複的行(如:柔佛)。如何消除重複的KodNegeriText項目以獲得只顯示一次KodNegeriText的結果。

例子。

KodNegeriText | KategoriSukanText | Total 
Johor   | Sukan Kecergasan | 16 
       | Sukan Paralimpik | 1 
       | Sukan Prestasi.. | 227 
       | ...    | ... 
Kedah   | Sukan Kecergasan | 14 
       | ...    | ... 

我試過玩弄DISTINCT但未能找到解決方案。

+2

你確定你想這樣做在SQL?我會在報告或表格中做它,因爲它不是數據。如果你這樣做,我們需要知道哪些dbms,例如mysql,sql server等 –

+0

第4行和第6行可以在sql中完成if ...也與上面相同 –

+0

當然,我也想到了。但只是想知道是否可以直接從查詢中完成,這將節省大量時間。這是mysql的順便說一句 – mfmz

回答

0

您的查詢爲您提供正確的結果。你打算做的是通過將結果集存儲在臨時表中並在SELECT列表上應用一些技巧來實現。

對於SQL Server,

CREATE TABLE #temp(KodNegeriText varchar(100), KategoriSukanText varchar(100), Total int) 

INSERT INTO #temp 
SELECT kodnegeri.KodNegeriText, kategorisukan.KategoriSukanText, COUNT(*) AS Total, 
FROM association 
INNER JOIN kodnegeri ON association.KodNegeri = kodnegeri.KodNegeri 
INNER JOIN kategorisukan ON association.KodKategoriSukan = kategorisukan.KategoriSukan 
GROUP BY kodnegeri.KodNegeriText, kategorisukan.KategoriSukanText 


;WITH tempCTE AS 
(

SELECT KodNegeriText , KategoriSukanText , Total , 
     Row_Number() OVER(PARTITION BY KodNegeriText ORDER BY KategoriSukanText,Total) as Rownum 
FROM #temp 

) 

SELECT CASE WHEN Rownum=1 THEN KodNegeriText ELSE '' END as KodNegeriText,KategoriSukanText , Total 
FROM tempCTE 


drop table #temp 
+0

會給這個嘗試和更新,如果它的作品 – mfmz