编程论坛's Archiver

networkangle 发表于 2007-5-19 23:09

[求助]怎么能让查询结果中的行列互换

怎么能让查询结果中的行列互换<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怎么实现?

dwt 发表于 2007-10-17 10:52

我也不知道<br><br>

比蜗牛快些 发表于 2007-10-21 21:34

没有做过<img>,头一回遇见有人想这样做

liuye 发表于 2007-10-23 16:59

这个没做过

偶是偶 发表于 2007-10-26 10:52

<P>好强的想象力[em17]</P>

sky_yang_sky 发表于 2007-10-27 17:05

<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) &gt;0 THEN RIGHT(COL1,2) ELSE COL1 END+ ') = MIN(CASE WHEN COL1 =  ' ' '+CASE WHEN PATINDEX( '%[^0-9]% ',COL1) &gt;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]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.