
如果在一个数组里面的,交换位置,可以用for循环遍历,然后通过中间变量实现交换,题目要求计奇偶交换,必须想办法拿到一个数的前后数据,所以用了两次left join,通过case语句进行选择
SELECT SEAT.ID,
CASE WHEN SEAT.ID % 2 = 0 THEN S2.student ELSE CASE WHEN ISNULL(S1.student) THEN SEAT.student ELSE S1.student END END student FROM SEAT
LEFT JOIN SEAT S1 ON SEAT.ID+1 = S1.ID
LEFT JOIN SEAT S2 ON SEAT.ID-1 = S2.ID
GROUP BY SEAT.id
网友评论