2013-07-31 35 views
-2

我在SQL查詢:查詢加入使用日期日期從SEIM表

SELECT * FROM table 

和查詢的輸出是:

4  casa  perro 
89 apartment mula 
12 casa  gato 
31 roor  mouse 
43 apartment zorro 
19 roor  sapo 
     . 
     . 
     . 

而在第二個欄我有2行對於每個元素,我有2行與CASA,2行與公寓,2行與羅爾,...

我需要一個查詢,顯示我的seim元素。

例如輸出:

4 perro 12 gato casa 
89 mula  43 zorro apartment 
31 mouse 19 sapo roor 
+0

什麼數據庫您使用的?這被標記爲MySQL和Oracle。 –

+0

你在問什麼?這個問題不清楚。?這是什麼?'我有2每個元素,我有2 CASA,2公寓,2 ROOR'具體和技術,而你問這個問題。 –

回答

1

假設是你使用MySQL(此標記先行在你的問題)。

你在找這樣的事嗎?

SELECT col1, 
     MIN(CASE WHEN rnum = 1 THEN id END) id1, 
     MIN(CASE WHEN rnum = 1 THEN col2 END) col21, 
     MIN(CASE WHEN rnum = 2 THEN id END) id2, 
     MIN(CASE WHEN rnum = 2 THEN col2 END) col22  
    FROM 
(
    SELECT t.*, @n := IF(@g = col1, @n + 1, 1) rnum, @g := col1 
    FROM Table1 t, (SELECT @n := 0) i 
    ORDER BY col1, id 
) q 
GROUP BY col1 

輸出示例:

 
|  COL1 | ID1 | COL21 | ID2 | COL22 | 
----------------------------------------- 
| apartment | 43 | zorro | 89 | mula | 
|  casa | 4 | perro | 12 | gato | 
|  roor | 19 | sapo | 31 | mouse | 

這裏是SQLFiddle演示


現在,您可以採取不同的方法,並與CONCAT()GROUP_CONCAT()idcol2值,使用不同的分隔符,分成一列(我們稱它爲details)。然後在迭代結果集的同時在客戶端上使用explode

SELECT col1, GROUP_CONCAT(CONCAT(id, '|', col2)) details 
    FROM Table1 
GROUP BY col1 

輸出示例:

 
|  COL1 |   DETAILS | 
-------------------------------- 
| apartment | 89|mula,43|zorro | 
|  casa | 4|perro,12|gato | 
|  roor | 31|mouse,19|sapo | 

下面是SQLFiddle演示

+0

標籤順序由SO而不是提問者決定。標籤按受歡迎程度排序。更多的問題被標記爲[mysql]而不是被標記爲[oracle],因此[mysql]首先被標記。 – APC

+0

@APC很高興知道。謝謝。 – peterm

+0

@AlexanderOvalle對您有幫助嗎?你的問題需要更多幫助嗎? – peterm