各位高手请赐教;有一个表Pen 有二列:
ID Name1 钢笔
3 水笔
4 圆珠笔
另个颜色 表Color 有二列
ID COLOR1 COLOR21 红色 黑色
4 黄色 红色现在想根据同一个笔不同的颜色列成一行行,如上面的就能列成:
Name color
钢笔 红色
钢笔 黑色
圆珠笔 黄色
圆珠笔 红色求各位在侠这个SQL如何写?十分感谢您的帮助!
ID Name1 钢笔
3 水笔
4 圆珠笔
另个颜色 表Color 有二列
ID COLOR1 COLOR21 红色 黑色
4 黄色 红色现在想根据同一个笔不同的颜色列成一行行,如上面的就能列成:
Name color
钢笔 红色
钢笔 黑色
圆珠笔 黄色
圆珠笔 红色求各位在侠这个SQL如何写?十分感谢您的帮助!
select Name,color from
(select Name,COLOR1 color,1 col
from Pen,Color
where Pen.ID=Color.ID
union all
select Name,COLOR2,2
from Pen,Color
where Pen.ID=Color.ID)
order by Name desc,col;
直接union allselect Pen,COLOR1 color from Pen a,Color b where a.id=b.id
union all
select Pen,COLOR2 color from Pen a,Color b where a.id=b.id
;
WITH pen AS(
SELECT '1'id,'gang bi'NAME FROM dual
UNION ALL
SELECT '3','shui bi' FROM dual
UNION ALL
SELECT '4','yuan zhu bi' FROM dual
),
color AS(
SELECT '1'id,'hong se'color1,'hei se'color2 FROM dual
UNION ALL
SELECT '4','huang se','hong se' FROM dual
)
select pen.NAME,color.color1,color.color2 FROM pen,color WHERE pen.id=color.id
color1,color2...color99
这么排列的还是怎么的也就是你的数据库结构是怎么样的
你的颜色字段是不是
color1,color2...color99
是的,字段是这样排列的。
create table t2 (id number,color1 varchar2(10),color2 varchar(10));
insert into t1 values(1,'钢笔');
insert into t1 values(3,'水笔');
insert into t1 values(4,'圆珠笔');
insert into t2 values(1 ,'红色','黑色');
insert into t2 values(4,'黄色','红色');select t1.name,t.color from t1,
(
select id,color1 as color from T2
UNION
select id,color2 from t2) t where t1.id=t.id;drop table t1;
drop table t2;
结果显示:
NAME COLOR
---------- ----------
钢笔 黑色
钢笔 红色
圆珠笔 红色
圆珠笔 黄色 4 rows selected