2015-04-01 63 views
0

在这样的表:
组通过与最大和秩序

code  code1 code2 code3 code4 
FILA841201 123456 481201 654987 NULL 
NULL  123456 481201 1234 NULL 
NULL  123456 481201 789014 324324 

我需要得到只有一条线,今天使用这些查询

CREATE TABLE TMP2(SELECT MAX(代码)作为代码,code1,max(code2)作为code2,max(code3)作为code3,max(code4)作为code4 FROM tmp1 WHERE code1 IS NOT NULL group by code1); (代码)作为代码,max(code1)作为代码1,代码2,max(代码3)作为代码3,max(代码4)作为代码4来自tmp1 WHERE代码2 IS NOT NULL由代码2组)。

ECC ......循环对所有列

我的问题是,如果有一列中不同的值,我不得不让位给填补了第一列线。

在这个例子中Code3我必须拿出“654987”而不是最大(789014)。

的结果,我应该得到

code  code1 code2 code3 code4 
FILA841201 123456 481201 654987 324324 

感谢您的关注

+0

有没有这样的事情作为“第一行”。你有一列指定行的排序吗? – 2015-04-01 20:56:05

+0

今天没有,希望我可以创建它 – user2069604 2015-04-01 21:03:17

回答

0

假设你有一个指定行的排序列,您可以用相关子查询做到这一点:

select (select code from tmp1 where code is not null order by id limit 1) as code, 
     (select code1 from tmp1 where code1 is not null order by id limit 1) as code1, 
     (select code2 from tmp1 where code2 is not null order by id limit 1) as code2, 
     (select code3 from tmp1 where code3 is not null order by id limit 1) as code3, 
     (select code4 from tmp1 where code4 is not null order by id limit 1) as code4 
+0

在这种情况下,如果我有不同的值,它会创建两行,我需要我忽略连续值,如果不同.. – user2069604 2015-04-01 21:02:30

+0

@ user2069604。 。 。这个查询不可能返回多于一行。 – 2015-04-01 22:16:19

+0

该查询生成了与第一个表几乎相同的表,但仍然无法使用,因为没有分组。我现在使用的系统从95.000到18.500记录,但我遇到了我之前说过的问题,如果任何一个人的第一列被重视,如果他们不同,必须在他自己的列的其他人身上有prededestza – user2069604 2015-04-02 19:02:55