在SQL查询中将行转换为列(Oracle)

时间:2019-01-09 10:42:29

标签: sql oracle

我不知道写报告以显示如下结果,请协助。非常感谢。

enter image description here

这是我的数据库表的样子

enter image description here

这就是我要在报告中显示的内容。

注:备注1,2,3不固定。有时会有备注4,备注5等...

1 个答案:

答案 0 :(得分:1)

如何使用标准sql语法在任何支持分析功能的数据库上旋转/转置/交叉表数据,尽管我还假设您的评论完全可以是任何文本:

SELECT 
  invoiceno,
  MAX(case when rn = 1 then remark end) as remark1,
  MAX(case when rn = 2 then remark end) as remark2,
  MAX(case when rn = 3 then remark end) as remark3/*,

    --add as many lines as you need columns
    MAX(case when rn = X  then remark end) as remarkX
  */
FROM
  (SELECT invoiceno, remark, row_number() over(partition by invoiceno order by remark) rn FROM table) t
GROUP BY invoiceno