簡體   English   中英

Oracle SQL自定義帶聯合排序

[英]Oracle SQL Custom Sort with Union

我有2個表要合並,並想使用ORDER BY CASE定制順序,但我不斷收到ORA-01785:ORDER BY項目必須是SELECT列表表達式錯誤的編號。

我的2個表都有一個名為“ VISIT”的列,其中包含(類似於)以下數據:

跟進表格:BASELINE,1_MONTH,2_MONTH

程序表:程序

我想合並這些表並按以下順序排序:BASELINE,PROCEDURE,1_MONTH,2_MONTH

我認為這應該起作用:

SELECT VISIT
FROM FollowUp
UNION
SELECT VISIT
FROM Procedure
ORDER BY
    CASE VISIT
    WHEN 'BASELINE' THEN 1
    WHEN 'PROCEDURE' THEN 2
    WHEN '1_MONTH' THEN 3
    WHEN '2_MONTH' THEN 4
    ELSE 5 END

但是我收到01785錯誤。 我也嘗試用CASE VISIT CASE 1替換CASE VISIT並得到相同的錯誤。 感謝您的幫助!

嘗試使用子查詢執行此操作:

select visit
from ((SELECT VISIT
       FROM FollowUp
      ) union
      (SELECT VISIT
       FROM Procedure
      )
     ) t
ORDER BY
    CASE VISIT
    WHEN 'BASELINE' THEN 1
    WHEN 'PROCEDURE' THEN 2
    WHEN '1_MONTH' THEN 3
    WHEN '2_MONTH' THEN 4
    ELSE 5 END;

如果不需要重復刪除,請使用union all

嘗試這個:

  SELECT x.visit,
         CASE x.VISIT
            WHEN 'BASELINE' THEN 1
            WHEN 'PROCEDURE' THEN 2
            WHEN '1_MONTH' THEN 3
            WHEN '2_MONTH' THEN 4
            ELSE 5
         END
            sort_by
    FROM (SELECT VISIT FROM FollowUp
          UNION ALL
          SELECT VISIT FROM Procedure) x
ORDER BY SORT_BY

嘗試這個:

SELECT VISIT, CASE VISIT WHEN 'BASELINE' THEN 1 WHEN 'PROCEDURE' THEN 2 WHEN '1_MONTH' THEN 3 WHEN '2_MONTH' THEN 4 ELSE 5 END ORDERFIELD FROM FollowUp UNION SELECT VISIT, CASE VISIT WHEN 'BASELINE' THEN 1 WHEN 'PROCEDURE' THEN 2 WHEN '1_MONTH' THEN 3 WHEN '2_MONTH' THEN 4 ELSE 5 END ORDERFIELD FROM Procedure ORDER BY ORDERFIELD

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM