Prova questo:
create type xxx as (t varchar, y varchar, z int);
with a as
(
select row(table_name, column_name, (random() * 100)::int) x
from information_schema.columns
)
-- cannot cast directly to xxx, should cast to text first
select (x::text::xxx).t, (x::text::xxx).y, (x::text::xxx).z
from a
In alternativa, si può fare questo:
with a as
(
select row(table_name, column_name, (random() * 100)::int) x
from information_schema.columns
),
-- cannot cast directly to xxx, should cast to text first
b as (select x::text::xxx as w from a)
select
(w).t, (w).y, (w).z
from b
Per selezionare tutti i campi:
with a as
(
select row(table_name, column_name, (random() * 100)::int) x
from information_schema.columns
),
-- cannot cast directly to xxx, should cast to text first
b as (select x::text::xxx as w from a)
select
(w).*
from b
si può fare anche questo, ma questo rende la tutto l'esercizio dell'utilizzo di ROW senza punti quando si può semplicemente rimuovere la funzione ROW e riprenderla dall'esterno di ct/derivato e. Ho ipotizzato che la ROW dell'OP provenisse da una funzione; per la quale egli dovrebbe utilizzare i codici di sopra, non è la seguente:
with a as
(
select row(table_name, column_name, (random() * 100)::int)::xxx x
from information_schema.columns
)
select
(x).t, (x).y, (x).z
from a
Perché avete bisogno di raggruppare quei 4 colonne per una colonna? –
Non ho bisogno di raggrupparli, voglio solo avere un'immagine per ogni prodotto ma non c'è modo di mettere LIMIT su un join come in mysql, la cosa migliore che ho ottenuto è stata la query sopra con ROW – codeassembly