[英]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.