+1 за помощь с ответом. Я сделал это, но я получаю эту ошибку: ОШИБКА: ORDER BY для результата UNION / INTERSECT / EXCEPT должен быть в одном из столбцов результата

к PostgreSQL (7.4 и 8.x), и я думал, что это работает, но теперь я получаю ошибки.

Я могу запускать запросы по отдельности, и это работает просто отлично, но если я UNION или UNION ALL, это выдает ошибку.

Это ошибки: (Предупреждение: pg_query (): Запрос не выполнен: ОШИБКА: столбец "Field1" не существует ... ORDER BY CASE "Field1" W ...)

SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName" 
WHERE condition
AND other_condition
UNION ALL
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName" 
WHERE yet_another_condition
AND yet_another_other_condition
ORDER BY CASE "Field1"
    WHEN 'A' THEN 1
    WHEN 'B' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
END

Это работает:

SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName" 
WHERE yet_another_condition
AND yet_another_other_condition
ORDER BY CASE "Field1"
    WHEN 'A' THEN 1
    WHEN 'B' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
END

И это работает также:

SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName" 
WHERE condition
AND other_condition
ORDER BY CASE "Field1"
    WHEN 'A' THEN 1
    WHEN 'B' THEN 2
    WHEN 'C' THEN 3
    ELSE 4
END

и если я оставлю ORDER BY и просто воспользуюсь UNION или UNION ALL, это также сработает.

Есть идеи?

Ответы на вопрос(2)

Ваш ответ на вопрос