Я могу создать таблицу, используя CTE, с оператором выбора, как показано ниже, но она ведет себя не так, как я хочу.
with sorting(item_code, index) as (
select (10001, 1), (10002, 2)
)
select * from sorting
Результат таблицы:
item_code|index |
---------+---------+
(10001,1)|(10002,2)|
По сути, я хочу создать таблицу со следующим значением:
item_code | index
10001 | 1
10002 | 2
Как я могу сделать это с помощью SQL?
Вы можете переключить select
на ключевое слово values
и получить то, что хотите. Это функция Postgres, называемая «таблица констант» dbfiddle здесь
Я хочу сослаться на эту таблицу позже, поскольку эта таблица является динамической и может содержать только 3–10 значений. Я полагаю, что хочу использовать CTE, поскольку я могу ссылаться на него в JOIN.
вы можете попробовать это:
with sorting(item_code, index) as (
select 10001 as item_code, 1 as index
union all
select 10002 as item_code, 2 as index
)
select * from sorting
Скорее всего, это то, что вам нужно, используя пункт значений :
демо на db<>fiddle
with sorting(item_code, index)as(values
(10001, 1)
,(10002, 2) )
select * from sorting;
Какую цель имеет CTE? Можно просто написать
SELECT 10001 as item_code, 1 as "index" union all select 10002,2
. Или какой у тебя настоящий вопрос?