J'ai une exigence dans laquelle j'ai besoin d'obtenir une colonne d'une autre table et d'insérer ces données de colonne avec d'autres données dans une autre table.
Exemple:
Si le cust_id = '11 'alors j'ai besoin d'obtenir le cust_code de la table cust (disons qu'il retourne cust_code =' ABCD ') et ensuite utiliser ce cust_code avec d'autres données à insérer dans la table_1 comme ceci:
WITH get_cust_code_for_cust_id AS (
SELECT cust_code FROM cust WHERE cust_id=11
)
INSERT INTO public.table_1(
cust_code, issue, status, created_on)
VALUES (SELECT cust_code FROM get_cust_code_for_cust_id, 'New Issue', 'Open', current_timestamp)
Mais cette requête ne fonctionne pas car nous n'avons pas appelé le get_cust_code_for_cust_id
requete.
Ma préférence est une requête avec la clause WITH
mais toute autre réponse sera également appréciée.
Si la source d'une instruction insert
est un select
do not utilisez le mot clé VALUES
.
WITH get_cust_code_for_cust_id AS (
SELECT cust_code
FROM cust
WHERE cust_id=11
)
INSERT INTO public.table_1 (cust_code, issue, status, created_on)
SELECT cust_code, 'New Issue', 'Open', current_timestamp
FROM get_cust_code_for_cust_id;
Cependant, vous n'avez pas vraiment besoin du CTE:
INSERT INTO public.table_1 (cust_code, issue, status, created_on)
SELECT cust_code, 'New Issue', 'Open', current_timestamp
FROM cust
WHERE cust_id=11