ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【SQL】一行变成两行的sql

【SQL】一行变成两行的sql

原创 Linux操作系统 作者:chicheng_cn421 时间:2011-11-22 16:45:34 0 删除 编辑

论坛上看到有位朋友问到 一行变两行的问题,当然解法不仅一种,这里简单记录一下。

帖子地址:http://www.itpub.net/thread-1513738-1-1.html

那位朋友的问题:
--------------------------------
求一行变成两行的sql

名字   分类   数量
A         x         10
B         y         20
C        x          30
C        y          40

要生成这样的效果:
名字   分类   数量
A         x         10
A         y     
B         x        
B         y         20
C        x          30
C        y          40


请各位帮帮忙,多谢!

--------------------------------

高手们给出的 使用分区连接 的解法
---------------------------------
WITH t AS
(SELECT 'A' a, 'x' b, 10 c FROM dual
UNION ALL
SELECT 'B', 'y', 20 FROM dual
UNION ALL
SELECT 'C', 'x', 30 FROM dual
UNION ALL
SELECT 'C', 'y', 40 FROM dual),
t1 AS(SELECT DISTINCT b FROM t)
SELECT t.a, t1.b, t.c
FROM t PARTITION BY (t.a)
RIGHT OUTER JOIN t1
ON (t.b = t1.b)
ORDER BY 1,2
---------------------------------

我也凑了个热闹,写了一种比较笨的方法:
---------------------------------
我也来凑个热闹

SQL> create table TEST
  2  (
  3    NAME VARCHAR2(10),
  4    TYPE VARCHAR2(10),
  5    QTY  VARCHAR2(10)
  6  );

Table created

SQL> insert into TEST (NAME, TYPE, QTY) values ('C', 'X', '30');

1 row inserted

SQL> insert into TEST (NAME, TYPE, QTY) values ('B', 'Y', '20');

1 row inserted

SQL> insert into TEST (NAME, TYPE, QTY) values ('A', 'X', '10');

1 row inserted

SQL> insert into TEST (NAME, TYPE, QTY) values ('C', 'Y', '40');

1 row inserted

SQL> commit;

Commit complete

SQL>  with
  2   t1 as
  3   (select distinct name from test ) ,
  4   t2 as
  5   (select distinct type from test),
  6   t3 as
  7   (select name,type from t1,t2 order by 1,2 )
  8   select t3.name,t3.type,t.qty from t3,test t
  9   where t3.name=t.name (+)
10       and t3.type=t.type  (+)
11    order by 1,2,3;

NAME       TYPE       QTY
---------- ---------- ----------
A          X          10
A          Y         
B          X         
B          Y          20
C          X          30
C          Y          40

6 rows selected

SQL>
--------------------------------

以上。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20335819/viewspace-711785/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-05

  • 博文量
    261
  • 访问量
    417490