如何使用oracle语句从1组中创建一行

Hyu*_*Yui 2 sql oracle grouping

有一组如下.

 refno | col1 | col2
---------------------
   1   |   a  |  aa 
   1   |   b  |  bb
   1   |   c  |  cc
   1   |   d  |  dd
Run Code Online (Sandbox Code Playgroud)

我想使用Oracle SQL这样做:

refno   a     b    c    d    
1       aa    bb   cc   dd
Run Code Online (Sandbox Code Playgroud)

怎么做?

Tat*_*ana 6

你可以用它来做 PIVOT

WITH sel AS
  (SELECT 1 refno , 'a' col1 , 'aa' col2 FROM dual
  UNION ALL
  SELECT 1 , 'b' , 'bb' FROM dual
  UNION ALL
  SELECT 1 , 'c' , 'cc' FROM dual
  UNION ALL
  SELECT 1 , 'd' , 'dd' FROM dual
  )
SELECT * 
FROM sel
PIVOT 
(max(col2)
FOR col1 IN ('a','b','c','d'))
Run Code Online (Sandbox Code Playgroud)

但您必须col1手动指定值 -FOR col1 IN ('a','b','c','d')

更多 - 这里这里