select ( SELECT listagg(column_name,',') within group (order by column_name) FROM user_tab_columns T WHERE table_name = 'INSURANTLISTNEW' AND t.COLUMN_NAME != 'INSURANTNO' and t.COLUMN_NAME != 'CORRECTIONSTATUS' ) from proposal.insurantlistnew p where p.insurantno = 'e53924eed00b4787933674e538057d57'; 这个查询结果怎么才能变为列名对应的值
时间: 2024-01-15 09:05:42 浏览: 22
要将查询结果转换为列名对应的值,您可以使用子查询并连接两个查询结果。以下是修改后的查询语句:
```sql
SELECT column_name,
(SELECT column_value
FROM proposal.insurantlistnew p
WHERE p.insurantno = 'e53924eed00b4787933674e538057d57'
AND p.column_name = t.column_name) column_value
FROM user_tab_columns T
WHERE table_name = 'INSURANTLISTNEW'
AND t.COLUMN_NAME != 'INSURANTNO'
AND t.COLUMN_NAME != 'CORRECTIONSTATUS';
```
这样,查询结果将包含列名和对应的值。请注意,您需要将 `INSURANTLISTNEW` 替换为您实际的表名,并在 `WHERE` 子句中将 `'e53924eed00b4787933674e538057d57'` 替换为您要的具体 `insurantno` 值。
相关问题
SELECT REGEXP_REPLACE(LISTAGG(a.param_code) WITHIN GROUP (ORDER BY a.param_name),'(\s)+',' ') FROM ybx_map_cj_fixabst_parammap a where a.param_name=p_enum_list;如何把这个赋值给变量
你可以使用以下语句将结果赋值给一个变量:
```
DECLARE
v_result VARCHAR2(4000);
BEGIN
SELECT REGEXP_REPLACE(LISTAGG(a.param_code) WITHIN GROUP (ORDER BY a.param_name),'(\s)+',' ')
INTO v_result
FROM ybx_map_cj_fixabst_parammap a
WHERE a.param_name = p_enum_list;
END;
```
在这个例子中,我们声明了一个名为 `v_result` 的变量,使用 `SELECT INTO` 语句将结果赋值给变量。在 `SELECT` 语句中,我们查询了需要的结果,并将其存储在变量 `v_result` 中。
EDP_EDP_EXTERNAL_PLANT_REPORT_U_$RUN_DATE.dat与 SELECT BYTES FROM USER_SEGMENTS WHERE SEGMENT_NAME = 'table_name_bad'; SELECT NUM_ROWS FROM USER_TABLES WHERE TABLE_NAME = 'table_name_bad'; 及$RUN_DATE 如何将上面查询语句结果集拼接为复合的SELECT语句并将结果用空格隔开?
以下是将查询语句结果集拼接为复合的SELECT语句并将结果用空格隔开的SQL语句:
```
SELECT LISTAGG(result, ' ') WITHIN GROUP (ORDER BY result_order) AS combined_results
FROM (
SELECT 'SELECT ' || bytes || ' FROM ' || segment_name || ';' AS result, 1 AS result_order
FROM USER_SEGMENTS
WHERE SEGMENT_NAME = 'table_name_bad'
UNION ALL
SELECT 'SELECT ' || num_rows || ' FROM ' || table_name || ';' AS result, 2 AS result_order
FROM USER_TABLES
WHERE TABLE_NAME = 'table_name_bad'
UNION ALL
SELECT '$RUN_DATE' AS result, 3 AS result_order
FROM dual
)
ORDER BY result_order;
```
其中,`USER_SEGMENTS`和`USER_TABLES`是Oracle系统表,用于查询表的信息,`dual`是Oracle系统表,用于查询常量。这个查询语句将三个查询结果拼接在一起,并用空格隔开,结果集中每一行都是一个完整的SELECT语句。其中,`$RUN_DATE`是作为一个常量插入到结果集中的,可以根据需要自行修改。