[求助]怎么能让查询结果中的行列互换
怎么能让查询结果中的行列互换<BR><BR>例如 select id,name,age,sex from person;<BR>本来显示是 id name age sex<BR> 01 xiao 21 男<BR> 02 li 22 女<BR>现在我想让 id 01 02<BR> name xiao li<BR> age 21 22<BR> sex 男 女<BR><BR>请问用SQL怎么实现? 我也不知道<br><br> 没有做过<img>,头一回遇见有人想这样做 这个没做过 <P>好强的想象力[em17]</P> <P>CREATE TABLE T<BR>(<BR> ID VARCHAR(20),<BR> Name VARCHAR(20),<BR> Age INT,<BR> Sex VARCHAR(20)<BR>)</P><P>INSERT INTO T<BR> SELECT '01 ', 'xiao ',21, '男 ' UNION ALL<BR> SELECT '02 ', 'li ',22, '女 '<BR>select * from t</P>
<P>DECLARE @sql VARCHAR(8000)<BR>SET @sql = ' '<BR>SELECT @sql <a href="mailto:=@sql" target="_blank" >=@sql</A>+ ',( '+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) '<BR>FROM<BR>(<BR>SELECT id=0,col1=id,col2=Name FROM t<BR>UNION ALL<BR>SELECT id=1,col1=id,CAST(AGE AS VARCHAR) FROM t<BR>UNION ALL<BR>SELECT id=2,col1=id,SEX FROM t<BR>UNION ALL<BR>SELECT 0, '00id ', 'name '<BR>UNION ALL<BR>SELECT 1, '00id ', 'age ' <BR>UNION ALL<BR>SELECT 2, '00id ', 'sex '<BR>) A GROUP BY COL1</P>
<P>SET @sql = STUFF(@sql,1,1, ' ')</P>
<P>EXEC ( 'SELECT <a href="mailto:'+@sql" target="_blank" >'+@sql</A>+ '<BR>FROM<BR>(<BR>SELECT id=0,col1=id,col2=Name FROM t<BR>UNION ALL<BR>SELECT id=1,col1=id,CAST(AGE AS VARCHAR) FROM t<BR>UNION ALL<BR>SELECT id=2,col1=id,SEX FROM t<BR>UNION ALL<BR>SELECT 0, ' 'id ' ', ' 'name ' '<BR>UNION ALL<BR>SELECT 1, ' 'id ' ', ' 'age ' ' <BR>UNION ALL<BR>SELECT 2, ' 'id ' ', ' 'sex ' '<BR>) A GROUP BY ID '<BR>)</P>
<P>DROP TABLE T<BR></P>
页:
[1]
