2011-08-11 52 views
0

我從這樣的查詢移調列結果在結果集中行

Continent Country 
------- ------- 
Asia Japan 
Asia Russia 
Asia India 
Europe Britain 
Europe France 

一個結果

select continent,country from tablexxx 

我想導致格式

Continent Country 
------- ------- 
Asia Japan,Russia,India 
Europe Britain,France 

我聽說支點表。但似乎很難,我... 與查詢任何幫助,請:)

這是我在SQL Server最終的解決方案,它的工作原理... :)

SELECT  continents, Countries = replace 
          ((SELECT Countries AS [data()] 
           FROM tblXXX 
           WHERE continents = a.continents 
           ORDER BY continents FOR xml path('')), ' ', ',') 
FROM  tblXXXa 
WHERE  continents IS NOT NULL 
GROUP BY continents 
+0

您正在使用什麼RDBMS和版本? –

+0

爲mysql看到這個問題http://stackoverflow.com/questions/4561650/mysql-group-concat-duplicates – sll

回答

0

可以使用COALESCE函數在這個例子中建立從行的逗號分隔的列表,如:

DECLARE @EmployeeList varchar(100) 

SELECT @EmployeeList = COALESCE(@EmployeeList + ', ', '') + 
    CAST(Emp_UniqueID AS varchar(5)) 
FROM SalesCallsEmployees 
WHERE SalCal_UniqueID = 1 

SELECT @EmployeeList 
+0

這將無法正常工作,除了作爲程序代碼中的構建塊,但實際上不是SQL。 – Johan

+0

我想爲此編寫一個查詢,而不使用任何變量 – sajad

+0

您可以將該概念放入UDF中。這就是我所做的。如果@Johan的建議可行,那可能會更好。 –