繁体   English   中英

多列中的单列值

[英]single column value in multiple columns


ID|Class | Number
--+------+---------
1 | 1    |  58.2
2 | 1    |  85.4
3 | 2    |  28.2
4 | 2    |  55.4

想要的结果是:

Column1 |Number | Column2 | Number
--------+-------+---------+---------
1       | 58.2  | 2       |28.2
1       | 85.4  | 2       |55.4

所需的 SQL 是什么?

您可以使用row_number()并聚合:

select 1, max(case when seqnum % 2 = 1 then number end),
       2, max(case when seqnum % 2 = 0 then number end)
from (select t.*,
             row_number() over (partition by class order by id) as seqnum
      from t
     ) t
group by ceiling(seqnum / 2.0);

聚合使用算术将每个类的行对放在一行中。

试试这个

SELECT 1 AS Column1,t2.Number,2 AS Column2,t1.Number
FROM
   (
   SELECT *
   FROM test11
   ) t2

   INNER JOIN

   (
   SELECT *
   FROM test11
   ) t1
   ON t1.Class = t2.Class
WHERE t1.ID < t2.ID
ORDER BY t1.ID DESC

db<>fiddle 中的演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM