Не удается правильно получить ожидаемый выходной сигнал объединения для SQL
Неприятности:
Не упорядочены должным образом и не выложили код / или использовали соглашения, как ожидалось.
Вопрос:
Union
оператор должен быть использован здесь, и с этой целью найти vendor_id
указано в третьей строке используемого кода, и его количество меньше, чем указано в последней строке кода. Код нужно будет отсортировать.
Используемый код:
SELECT job_id, po_id, 'Vendor ' || vendor_id as 'Reason'
FROM pos
WHERE vendor_id IS 'SOS'
UNION
SELECT job_id, po_id, 'Quantity < ' || quantity as 'Reason'
FROM pos
WHERE quantity < 10;
Значит получить:
job_id po_id Reason
---------- ---------- ------------
002 AAA Quantiy < 10
004 CCC Quantiy < 10
004 CCC Vendor SOS
005 EEE Vendor SOS
006 GGG Quantiy < 10
Получено (от CodeRunner):
Runtime error
Program does not use the expected ORDER BY clause or is badly laid out.
См. Схему базы данных для более подробной информации (первичные ключи выделены жирным шрифтом).
Используется неизвестная СУБД. Ведет себя как PostgreSQL
и не mysql
,
1 ответ
Сортировать по job_id
следовать po_id
, просто добавь ORDER BY
предложение в конце запроса. По умолчанию порядок сортировки ASC
(по возрастанию), вы можете добавить DESC
если вы хотите отсортировать в порядке убывания.
SELECT
job_id,
po_id,
'Vendor ' || vendor_id as 'Reason'
FROM pos
WHERE vendor_id = 'SOS'
UNION
SELECT
job_id,
po_id,
'Quantity < ' || quantity as 'Reason'
FROM pos
WHERE quantity < 10
ORDER BY
job_id,
po_id;