Как создать столбец и строки с помощью оператора выбора CTE?

Я могу создать таблицу, используя 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?

Какую цель имеет CTE? Можно просто написать SELECT 10001 as item_code, 1 as "index" union all select 10002,2. Или какой у тебя настоящий вопрос?

Jonas Metzler 22.08.2024 20:01

Вы можете переключить select на ключевое слово values и получить то, что хотите. Это функция Postgres, называемая «таблица констант» dbfiddle здесь

JNevill 22.08.2024 20:02

Я хочу сослаться на эту таблицу позже, поскольку эта таблица является динамической и может содержать только 3–10 значений. Я полагаю, что хочу использовать CTE, поскольку я могу ссылаться на него в JOIN.

mandaputtra 23.08.2024 04:58
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вы можете попробовать это:

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;
код_предмета индекс 10001 1 10002 2

Другие вопросы по теме