我有一個帶有大量查詢的sql查詢。SQL連接到很多行
但我會盡量做到簡單
Table.Result
Id
Result
Table.ResultGender
ResultID
GenderID
Table.Gender
Id
Gender
一個結果可以有不止一個性別。 所以想這樣
Result | Gender
Some result | Female
Another result | Female, male
結果,但我發現
Result | Gender
Some result | Female
Another result | male
Another result | Female
查詢:
SELECT Gender.Name , Result.Result
FROM Gender
LEFT OUTER JOIN ResultGender ON Gender.Id = ResultGender.GenderId
LEFT OUTER JOIN Result ON ResultGender.ResultId = Result.Id
UPDATE
我已經試過這
SELECT Gender.Name , Result.Result ,
STUFF((SELECT ',' + Name
FROM Gender
WHERE (Id = Gender_1.Id) FOR XML PATH(''))as varchar(max)) AS test
FROM Gender AS Gender_1
LEFT OUTER JOIN ResultGender ON Gender_1.Id = ResultGender.GenderId
LEFT OUTER JOIN Result ON ResultGender.ResultId = Result.Id
而這SQL經理
SELECT Gender.Name , Result.Result ,
CAST((SELECT ',' + Name
FROM Gender
WHERE (Id = Gender_1.Id) FOR XML PATH(''))as varchar(max)) AS test
FROM Gender AS Gender_1
LEFT OUTER JOIN ResultGender ON Gender_1.Id = ResultGender.GenderId
LEFT OUTER JOIN Result ON ResultGender.ResultId = Result.Id
兩者都試圖挽救一個RPT文件
根據數據庫使用的是你可以使用像[LISTAGG]一個聚合函數(http://docs.oracle。 com/database/121/SQLRF/functions100.htm)from oracle or [group_concat](http://stackoverflow.com/questions/9456380/aggregate-function-in-mysql-list-like-listagg-in-oracle)from MySQL的。你只需要一個組,並且你會得到結果 – SomeJavaGuy
所以你想要聚合你的數據,例如每個結果得到逗號分隔的性別列表?什麼是你的DBMS?有些提供了LISTAGG和GROUP_CONCAT這樣的功能,其他則沒有。編輯:凱文是快了很多:-) –
請刪除所有這些連接標記並標記您的DBMS(MySQL,SQL Server,Oracle或其他)。 –