sql查询怎么将列头放在行中?

一般我们的sql查询结果为:完好送达率准时送达率清关及时率遗失破损件数重新派送次数发货准确率0.890.890.890.890.890.890.890.89我现在想要得到... 一般我们的sql查询结果为:
完好送达率 准时送达率 清关及时率 遗失破损件数 重新派送次数 发货准确率 0.89 0.89 0.89 0.89 0.89 0.89 0.89 0.89

我现在想要得到如下结果:

列名 数据

完好送达率 89%
准时送达率 89%
清关及时率 89%
遗失破损件数 89%
重新派送次数 89%
发货准确率 89%
未扫描次数 89%
客户投诉率 89%

请各位技术支持!
展开
 我来答
frogley
2012-03-21 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1067万
展开全部
基本思路:从系统表syscolumns里取出原表的所有列名,然后用游标循环,通过动态sql语句取出每一列的值,存放到临时表中。

declare @tmp table(列名 varchar(50),数据 float)
DECLARE mycursor CURSOR
for select name from syscolumns where id=object_id('原表') --从系统表中取出所有列名
OPEN mycursor --打开游标
declare @fieldname sysname --定义变量
fetch next from mycursor into @fieldname --取列名
while (@@FETCH_STATUS <> -1) --判断游标
begin
IF (@@FETCH_STATUS <> -2)
begin
insert into @tmp
exec('select top 1 '''+@fieldname+''','+@fieldname+' from 原表')
--用动态sql语句查询列名和列值,存入临时表
fetch next from mycursor into @fieldname --取下一个列名
end
end
close mycursor --关闭游标
DEALLOCATE mycursor --销毁游标
select * from @tmp

结果:
列名 数据
完好送达率 0.89
准时送达率 0.89
清关及时率 0.89
遗失破损件数 0.89
重新派送次数 0.89
发货准确率 0.89
hxinshu321
2012-03-21 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:100%
帮助的人:107万
展开全部
写个过程或函数转换一下,或者借助临时表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友36f922b
2012-03-21 · TA获得超过248个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:184万
展开全部
这个可以用select case 处理
简单的行列转换,百度一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7282eee
2012-03-21 · TA获得超过346个赞
知道小有建树答主
回答量:555
采纳率:100%
帮助的人:182万
展开全部
用游标啊
追问
如题采取答案:如果涉及到多表且有相同列名,这种情况怎么做处理?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式