显示结果 - 来自1列的数据根据​​标准分为2列

时间:2013-09-23 16:22:38

标签: mysql sql oracle toad

您好我需要帮助......

我的查询显示以下结果:

Id      name           color    Version
1       leather        black      1
1       leather        brown      2
2       suede          brown      1
3       cloth          green      1
3       cloth          blue       2

我想显示以下内容:

Id      name           color    Color_2    
1       leather        black      brown     
2       suede          brown      
3       cloth          green      blue

查询很简单 目前

SELECT ID, NAME, COLOR,VERSION
FROM table1,table2  
WHERE table1.ID = table2.ID 
AND id in 
    (SELECT ID 
    FROM table1,table2 
    WHERE table1.ID = table2.ID  
    AND VERSION in ('1'))
AND VERSION in ('1','2')

3 个答案:

答案 0 :(得分:1)

一个简单的(如果你在设计时知道你可能拥有的最大颜色数)

drop table my_test;

create table my_test (
  id          number,
  name        varchar2(32),
  color       varchar2(32),
  version     number);

insert into my_test values(1,'leather','black',1);
insert into my_test values(1,'leather','brown',2);
insert into my_test values(2,'suede','brown',1);
insert into my_test values(3,'cloth','green',1);
insert into my_test values(3,'cloth','blue ',2);

set linesize 200
select min(id) id,
       name,
       max(decode(version,1,color,null)) color,
       max(decode(version,2,color,null)) color_2
  from my_test
 group by name
 order by 1;

        ID NAME       COLOR      COLOR_2   
---------- ---------- ---------- ----------
         1 leather    black      brown     
         2 suede      brown                
         3 cloth      green      blue      

3 rows selected.

这适用于任何Oracle数据库版本。根据您使用的版本,查看LISTAGG,WM_CONCAT等(here

答案 1 :(得分:0)

你的数据库类型到处都是...它是mysql还是oracle?无论如何,我正在通过你的select语句猜测oracle。我正在使用基于'join'的语法,我觉得它比你在这里阅读起来更容易。使用版本1的select语句并将其连接到版本为2的select语句。如果版本为3,则在其中添加另一个联接。

select a.id, a.name, a.colour, b.colour
from (select * from table1 where version = 1) a
left join (select * from table1 where version = 2) b
 on a.id = b.id

(假设版本1始终存在,并且没有版本1的版本2)

答案 2 :(得分:0)

让我重新构思这个问题 - 它是oracle ..它来自同一个表格的颜色也是... SELECT tabble1.ID,table1.NAME,table1.COLOR,table1.VERSION FROM table1,table2
WHERE table1.ID = table2.ID 和id在     (选择ID     FROM table1,table2     table1.ID = table2.ID
    和'版本'('1')) 和'版本'('1','2')