2016-09-14 82 views
-3

我需要關於sql查詢的幫助.. 對不起,但我不太瞭解sql,而且我對英語不好。從1個表中獲取2個或更多數據

我有這樣的SQL表。

| ID | Data | 
| 1 | abc | 
| 1 | def | 
| 1 | ghi | 
| 2 | jkl | 
| 2 | mno | 
| 3 | pqr | 
| 3 | stq | 

,我想造成這樣

| ID |  Data  | 
| 1 | abc, def, ghi | 
| 2 | jkl, mno  | 
| 3 | stq, def  | 

或類似這樣的

| ID | Data1 | Data2 | Data3 | 
| 1 | abc | def | ghi | 
| 2 | jkl | mno | 
| 3 | pqr | stq | 

我希望有人能幫助我。謝謝。

+3

您使用SQL-Server或MySQL的。 – Nebi

+0

幾個提示,讓你可以嘗試自己。您可以使用case/group –

+1

research'group by'和'group_concat'...祝您好運 –

回答

0

對於MySQL:

group_concat是你的朋友。

該函數返回一個字符串結果,其中包含來自一個組的連接的非NULL 值。如果沒有非NULL值,它將返回NULL。

SELECT id, group_concat(data) as data from my_table group by id 

這產生第一個樣品中的類型的結果。第二個示例輸出更加複雜,

+0

@Suraz @Suraz我錯過了這個事實,它被標記爲SQL服務器和mysql – e4c5

+0

group_concat是沒有人的朋友:-( – Strawberry

+0

哦,我很抱歉浪費你的時間.. 這是我的隨機工作,我不對此很瞭解.. 謝謝你的回答,這就是我需要的.. –

2

對於SQL Server:

select id, 
stuff((select ','+data from #temp t2 where t1.id=t2.id for xml path ('')),1,1,'') as val from #temp t1 
group by id 

爲MySQL:

SELECT id,GROUP_CONCAT(data) 
FROM table 
GROUP BY id; 
+0

@Suraz:沒有在SQLServer沒有組concat – TheGameiswar

+0

沒錯,你已經在兩個sql服務器和MySQL,對不起,我沒有注意到 – Susang

0

使用東西功能

DECLARE @tbl1 AS TABLE 
(
    Id INT, 
    Data VARCHAR(50) 
) 


INSERT INTO @tbl1 VALUES(1,'abc') 
INSERT INTO @tbl1 VALUES(1,'def') 
INSERT INTO @tbl1 VALUES(1,'ghi') 
INSERT INTO @tbl1 VALUES(2,'jkl') 
INSERT INTO @tbl1 VALUES(2,'mno') 
INSERT INTO @tbl1 VALUES(3,'pqr') 
INSERT INTO @tbl1 VALUES(3,'stu') 

SELECT 
    Id, 
    (
     SELECT 
     STUFF 
     ( 
      (
       SELECT 
        ',' + Data 
       FROM @tbl1 B        
       WHERE A.Id=B.Id        
       FOR XML PATH('') 
      ), 
      1, 1, '' 
     ) 
    ) AS Data 
FROM @tbl1 A 
GROUP By A.Id 
2

嘗試下面的查詢,它應該工作

select 
    t1.id, 
    Data=STUFF((select ', '+t2.Data from test t2 where t1.id=t2.id for xml path('')),1,2,'') 
    from test t1 
    group by t1.id 

我嘗試此查詢的SQL Server

相關問題