У меня есть 2 таблицы, которые я объединяю и хочу сделать заказ, используя ORDER BY CASE
, но я продолжаю получать ORA-01785: ORDER BY должен быть номером ошибки выражения SELECT-списка.Oracle SQL Custom Sort with Union
Мои 2 таблицы имеют столбец с именем "ВИЗИТ", содержащий (что-то подобное) следующие данные:
Followup стол: BASELINE, 1_MONTH, 2_MONTH
Процедура таблице: ПРОЦЕДУРА
Я хочу союза этих таблиц и сортировки в следующем порядке: BASELINE, ПРОЦЕДУРА, 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
и получить ту же ошибку. Спасибо вам за помощь!
Так как вы заказываете объединение результирующего набора я хотел бы предложить вам, чтобы положить его внутрь paranthesis. 'ВЫБОР ВИЗИТ ОТ (SELECT ВИЗИТ ИЗ Followup СОЕДИНЕНИЕ ВЫБОР ВИЗИТ ОТ процедуры) ORDER BY СЛУЧАЙ VISIT КОГДА 'ИСХОДНЫЕ' ТОГДА 1 КОГДА 'ПРОЦЕДУРА' ТОГДА 2 КОГДА '1_MONTH' ТОГДА 3 , когда" 2_MONTH 'THEN 4 ELSE 5 END' – arunb2w
Неверный ваш логин. 1,2,3,4 заканчивается ссылкой на номер столбца результирующего набора, но у вас есть только один столбец (посещение). – OldProgrammer