Объединение двух операторов SQL SELECT в одной таблице

Я хотел бы объединить эти два SQL-запроса:

SELECT * FROM "Contracts" WHERE "productType" = 'RINsell' AND "clearTime" IS NULL AND "holdTime" IS NOT NULL ORDER BY "generationTime"; 

а также

 SELECT * FROM "Contracts" WHERE "productType" = 'RINsell' AND "clearTime" IS NULL AND "holdTime" IS NULL ORDER BY "contractLimitPrice"; 

Когда я запускаю каждое утверждение, я получаю именно те результаты, которые хочу, я бы просто хотел, чтобы оба результата были последовательно. Моя первая мысль заключалась в том, чтобы использовать UNION ALL, поскольку эти выборы будут непересекающимися, но я обнаружил, что вы не можете использовать UNION после ORDER BY . Я искал совсем немного, и большинство людей предлагают сделать ORDER BY после UNION но каждый запрос имеет разные условия ORDER BY .

Если вы хотите получить результаты первого запроса перед результатами второго, вы можете удалить holdtime из предложения where и использовать порядок, как

 order by case when holdTime is not null then 0 else 1 end, --first query comes first case when holdTime is not null --different orders for queries then generationTime else contractLimitPrice end 

… но я обнаружил, что вы не можете использовать UNION после ORDER BY .

Ну, вы не выглядели достаточно тяжело:

 ( SELECT * FROM "Contracts" WHERE "productType" = 'RINsell' AND "clearTime" IS NULL AND "holdTime" IS NOT NULL ORDER BY "generationTime" ) UNION ALL ) SELECT * FROM "Contracts" WHERE "productType" = 'RINsell' AND "clearTime" IS NULL AND "holdTime" IS NULL ORDER BY "contractLimitPrice" ) 

Обратите внимание на круглые скобки. По документации:

( ORDER BY и LIMIT могут быть присоединены к подвыражению, если они заключены в круглые скобки. Без круглых скобок эти положения будут приняты для применения к результату UNION , а не к его правому входному выражению.)

Близкий ответ:
Суммируйте результаты нескольких запросов, а затем найдите 5 лучших в SQL

Кроме того: я действительно избавился бы от этих идентификаторов случая CaMeL . В Postgres ваша жизнь намного проще с юридическими идентификаторами всех нижних регистра.