Sql 如何使用oracle语句从1个组中生成一行

Sql 如何使用oracle语句从1个组中生成一行,sql,oracle,grouping,Sql,Oracle,Grouping,下面是一个小组 refno | col1 | col2 --------------------- 1 | a | aa 1 | b | bb 1 | c | cc 1 | d | dd 我想使用Oracle SQL使其成为这样: refno a b c d 1 aa bb cc dd 如何操作?您可以使用PIVOT WITH sel AS (SELECT

下面是一个小组

 refno | col1 | col2
---------------------
   1   |   a  |  aa 
   1   |   b  |  bb
   1   |   c  |  cc
   1   |   d  |  dd
我想使用Oracle SQL使其成为这样:

refno   a     b    c    d    
1       aa    bb   cc   dd

如何操作?

您可以使用
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'))
但是您必须手动为col1指定
col1
值-
在('a','b','c','d')

更多