繁体   English   中英

如何使用不同的顺序选择相同的列两次

[英]How to select the same column twice with different order

这是我的问题。 我需要在同一个选择中以不同的方式订购相同的列。 首先是asc,然后是desc。

例:

表格1

+--------+-----+
| Name   | Age |
+--------+-----+
| Coa    | 20  |
| Bami   | 12  |
| Alice  | 50  |
+--------+-----+

结果应该是:

+------+-----+
| Age  | Age |
+------+-----+
| 12   | 50  |
| 20   | 20  |
| 50   | 12  |
+------+-----+

我希望同一列首先订购Ascendant,然后是Descendant。

我在尝试

询问

Select t1.age, t2.age
from table1 t1 
inner join table1 t2 
on t1.name=t2.name
order by t1.age asc, t2.age desc

但在结果中,两列都以相同的方式排序。

谁知道如何解决这个问题?

这是一个非常奇怪的要求。 您可以使用row_number()和连接执行此操作:

select t1a.age, t1b.age
from (select t1.*, row_number() over (order by age asc) as seqnum
      from table1 t1
     ) t1a join
     (select t1.*, row_number() over (order by age desc) as seqnum
      from t1
     ) t1b
     on t1a.seqnum = t1b.seqnum
order by t1a.age;

SQL小提琴演示

WITH CTE AS
(
    SELECT NAME,
            AGE,
            ROW_NUMBER() OVER(ORDER BY AGE ASC) AS AC,
            ROW_NUMBER() OVER(ORDER BY AGE DESC) AS DC
    FROM YOURTABLE
)

SELECT C1.AGE,C2.AGE
FROM CTE C1 
        INNER JOIN CTE C2 ON C1.AC=C2.DC

暂无
暂无

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

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