ORACLE-扁平化数据

ORACLE-扁平化数据,oracle,pivot,decode,Oracle,Pivot,Decode,我相信这个问题以前有人问过,但可能不是这样 以下是数据: 我需要平展行和结束输出: 有什么想法吗?正如你所说的,我们可以在这里使用行数,然后使用行数来旋转它 select * from ( select userid,make,model, row_number() over (partition by userid order by make,model) rn from table1 ) pivot ( max(make) make,max(model) mo

我相信这个问题以前有人问过,但可能不是这样

以下是数据:

我需要平展行和结束输出:


有什么想法吗?

正如你所说的,我们可以在这里使用
行数
,然后使用
行数
来旋转它

select *
  from
(  
select userid,make,model,
       row_number() over (partition by userid order by make,model) rn
  from table1
)
pivot
(
 max(make) make,max(model) model
 for rn in (1,2,3,4,5)
)

使用许多人喜欢的条件聚合

select userid
      ,max(case when rn = 1 then make end) make_1
      ,max(case when rn = 1 then model end) model_1
      ,max(case when rn = 2 then make end) make_2
      ,max(case when rn = 2 then model end) model_2
      ,max(case when rn = 3 then make end) make_3
      ,max(case when rn = 3 then model end) model_3
  from
(  
select userid,make,model,
       row_number() over (partition by userid order by make,model) rn
  from table1
)
group by userid;

在这两种情况下,您都可以说缺点是对行号进行硬编码,但这就是它的工作方式,否则您可能会在必要时选择动态SQL。

您还没有包括您尝试过的内容,这需要进行下一票。我曾考虑将DECODE与子查询或PIVOT结合使用,但老实说,我被卡住了。您将如何决定使用哪个make/model1号,也就是2号,等等。?一旦您为每个用户对它们进行了排名(提示),您就可以将排名作为轴心的一部分。品牌和型号的显示顺序对您有影响吗?顺序本身并不重要。我认为第1行是MAKE/MODEL 1,第2行是MAKE/MODEL 2,依此类推。我将不得不与排_数字和排名玩,谢谢你的想法。