簡體   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