I have a query that returns this
SELECT COLNAME FROM TABLE_1 WHERE CATALOG_ID = 40;
COLNAME
----------------
CONVERTED_VALUE
CONVERTED_VALUE_01
CONVERTED_VALUE_02
CONVERTED_VALUE_03
VALUE_DESCRIPTION
I need to convert this result into a query like the next:
SELECT CONVERTED_VALUE, CONVERTED_VALUE_01, CONVERTED_VALUE_02,
CONVERTED_VALUE_03 , VALUE_DESCRIPTION
FROM TABLE2 WHERE CATALOG_ID = 40;
Is posible to do this in a single query I don't know for example
SELECT( SELECT COLNAME FROM TABLE_1 WHERE CATALOG_ID = 40 )
FROM TABLE_2 WHERE CATALOG_ID = 40;
Obviously that doesn't work but is the idea :)
I really don't know how to achieve this. Any suggestion guys? I'm not an expert at using databases :(
I'm using Oracle 10.
The idea is basically convert the result of the first query into the parameters of the second one.
I think this is what you're looking for, as long as my understanding of your question is correct:
SELECT
t.CONVERTED_VALUE,
t.CONVERTED_VALUE_01,
t.CONVERTED_VALUE_02,
t.CONVERTED_VALUE_03,
t.VALUE_DESCRIPTION
FROM
(SELECT COLNAME FROM TABLE_1 WHERE CATALOG_ID = 40) t,
TABLE_2
WHERE TABLE_2.CATALOG_ID = 40;
If i'm not understanding what you're asking let me know.
This is what came to my mind. But firing select statement from anonymous block would not look nice.
DECLARE
V_COL VARCHAR2(100):='';
s_ql VARCHAR2(200):='';
BEGIN
SELECT LISTAGG(COLNAME,',') WITHIN GROUP(ORDER BY COLNAME) AS COL INTO V_COL FROM TABLE_1 WHERE CATALOG_ID = 40 group by CATALOG_ID;
s_ql:='SELECT '||V_COL||' FROM TABLE2 WHERE CATALOG_ID = 40';
EXECUTE IMMEDIATE (s_ql);
END
You can use some variable or collection to capture result and display it using DBMS_OUTPUT .
select语句的返回格式与我们需要提供的列名格式不匹配,所以我猜这是不可能的:(
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.