我是SQL的新手,它试图在单个语句中置换SQL中的矩阵。
我尝试使用order by,但是我不确定该怎么做,因为这种方法需要两次对行进行排序。
当前我正在尝试:
select * from matrix, order by i=1;
select * from matrix, order by i desc;
[行-我 列-j 值-val]
原始矩阵:
1, 2, 3
4, 5, 6
7, 8, 2
所需矩阵:
7, 8, 2
1, 2, 3
4, 5, 6
(行0-> 1,1-> 2,2-> 0)
我想在单个sql查询中实现所需的矩阵。
答案 0 :(得分:0)
假设矩阵的第一列代表记录的顺序(示例数据倾向于指示记录的顺序),则可以使用窗口函数(在大多数RDBMS上可用,但通常不是在所有版本上都可用)来实现。
您可以使用('C', 15)
('D', 4)
('F', 7)
('G', 5)
('J', 5)
('K', 1)
检索下一条记录的ID,并使用此值对结果进行排序:
LEAD(c1) OVER(ORDER BY c1)
SELECT * FROM mytable t ORDER BY LEAD(c1) OVER(ORDER BY c1);
c1 | c2 | c3 -: | -: | -: 7 | 8 | 2 1 | 2 | 3 4 | 5 | 6