首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 带文字数据的行列翻转 [已结贴,结贴人:random_11ers]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 18:24:34 楼主
    找遍了论坛只找到数字内容的文字翻转
    如果我有如下表test:
    city temp
    广州  热
    上海  冷
    深圳  凉快

    怎么用存储过程翻转成
    广州 上海 深圳
    热  冷  凉快
    显示?
    抓破头皮了
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 18:27:421楼 得分:0
    declare @s varchar(8000)
    select @s= isnull(@s+',','')+'['+city+']=case when city = '''+city+''' then temp else null end'
    from test

    exec('select '+ @s + ' from ta')
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 18:34:232楼 得分:20
    create table test(city varchar(10), temp varchar(10))
    insert test select
    '广州','热' union select
    '上海','冷'  union select
    '深圳','凉快'
    go

    declare @s varchar(8000)
    select @s= isnull(@s+',','')+'['+city+']=max(case when city = '''+city+''' then temp else null end)'
    from test

    exec('select '+ @s + ' from test ')

    drop table test

    /*

    广州        上海        深圳       
    ---------- ---------- ----------
    热          冷          凉快

    警告: 聚合或其它 SET 操作消除了空值。
    */
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 18:41:173楼 得分:0
    上述方法我试过了,会存在多行,响应栏位为NULL;
    广州    上海    深圳
    热 NULL NULL
    NULL 冷 NULL
    NULL NULL 凉快

    我想要输出1行显示怎么办呢
    要求
    广州    上海    深圳
    热 冷 凉快


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 18:42:584楼 得分:0
    好快,谢谢啦
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved