oracle把两个列的值互换,[求助]怎么能让查询结果中的行列互换

本文介绍了如何使用SQL创建包含动态列的表格,并执行了插入和查询操作,展示了如何通过CASE语句根据特定条件动态生成最小值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE TABLE T

(

ID VARCHAR(20),

Name VARCHAR(20),

Age INT,

Sex VARCHAR(20)

)

INSERT INTO T

SELECT '01 ', 'xiao ',21, '男 ' UNION ALL

SELECT '02 ', 'li ',22, '女 '

select * from t

DECLARE @sql VARCHAR(8000)

SET @sql = ' '

SELECT @sql =@sql+ ',( '+CASE WHEN PATINDEX( '%[^0-9]% ',COL1) >0 THEN RIGHT(COL1,2) ELSE COL1 END+ ') = MIN(CASE WHEN COL1 = ' ' '+CASE WHEN PATINDEX( '%[^0-9]% ',COL1) >0 THEN RIGHT(COL1,2) ELSE COL1 END+ ' ' ' THEN col2 END) '

FROM

(

SELECT id=0,col1=id,col2=Name FROM t

UNION ALL

SELECT id=1,col1=id,CAST(AGE AS VARCHAR) FROM t

UNION ALL

SELECT id=2,col1=id,SEX FROM t

UNION ALL

SELECT 0, '00id ', 'name '

UNION ALL

SELECT 1, '00id ', 'age '

UNION ALL

SELECT 2, '00id ', 'sex '

) A GROUP BY COL1

SET @sql = STUFF(@sql,1,1, ' ')

EXEC ( 'SELECT '+@sql+ '

FROM

(

SELECT id=0,col1=id,col2=Name FROM t

UNION ALL

SELECT id=1,col1=id,CAST(AGE AS VARCHAR) FROM t

UNION ALL

SELECT id=2,col1=id,SEX FROM t

UNION ALL

SELECT 0, ' 'id ' ', ' 'name ' '

UNION ALL

SELECT 1, ' 'id ' ', ' 'age ' '

UNION ALL

SELECT 2, ' 'id ' ', ' 'sex ' '

) A GROUP BY ID '

)

DROP TABLE T

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值