2013-07-31 36 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