需要一个SQL来创建一个View

时间:2014-11-27 11:58:15

标签: sql oracle sql-view

我在oracle数据库中有一个表:

   id | name      | value
   -----------------------
   1  | dog name  | ham
   1  | cat name  | miau
   1  | childs    | 1
   2  | dog name  | wham
   2  | cat name  | meow
   2  | childs    | 3

我希望看到这样的观点:

 id  |  dog name | cat name | childs
------------------------------------
  1  |  ham      | miau     | 1
  2  |  wham     | meow     | 3

你可以帮我用sql来做吗?

2 个答案:

答案 0 :(得分:3)

使用此查询:我无法连接到SQLfiddler。所以,请检查代码并告诉我它返回的内容。

select *
from
(
    SELECT id, name, value FROM table A)
    pivot
    (
        max(value) for name in ('dog name', 'cat name', 'childs')
    )
order by id

您可以从此处了解有关PIVOT for oracle的更多信息:link

答案 1 :(得分:3)

    CREATE TABLE #temp
    (
    id INT,
    name VARCHAR(20),
    value VARCHAR(10)

    )

    INSERT INTO #temp VALUES(  1,'dog name','ham')
    INSERT INTO #temp VALUES( 1,'cat name' ,'miau')
    INSERT INTO #temp VALUES(   1,'childs',' 1')
    INSERT INTO #temp VALUES(   2,'dog name','wham')
    INSERT INTO #temp VALUES(   2 ,'cat name','meow')
    INSERT INTO #temp VALUES(   2,'childs','3')



    SELECT * FROM #temp 

    PIVOT (MAX(value) FOR name IN ([dog name],[cat name],[childs])) AS PVT



     DROP TABLE #temp

解决方案

   SELECT * FROM #temp 

    PIVOT (MAX(value) FOR name IN ([dog name],[cat name],[childs])) AS PVT

替换

  

“#temp”,表名为