kw269937519
淘人居士
采纳率26.7%
2018-01-02 02:37

sqlserver如何动态定义查询列名?

5
已采纳

通常查询语句中定义列名是
value as fieldname 这样的格式
现在我希望as后面的内容是动态计算得到的
例如 value as func(value)
有没有解决办法?
请仔细阅读问题描述后回答!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

9条回答

  • Leaderxin Leaderxin 3年前

    查询结果每行的列都必须是相同的,只能通过case when语句把不同类型的数据放到不同列中,如果说你的func(value)返回结果很多,建议把逻辑放在编程语言中,而不是数据库查询中

    点赞 1 评论 复制链接分享
  • hskill 堕落恶魔_Delphi 3年前

    单纯的SQL肯定做不到 不允许列名变量
    但是你可以通过exec的方式来实现, 吧你的SQL当做字符串拼出来列名可以通过函数返回, 然后再exec这个字符串得到结果

    点赞 1 评论 复制链接分享
  • a466631276 C_*_z 3年前
    点赞 1 评论 复制链接分享
  • guzhenglongguojun guzhenglongguojun 3年前

    as只是起个别名而已,你可以 func(value) as othername。

    点赞 评论 复制链接分享
  • lxx1063018911 lxx1063018911 3年前

    sql语句中一般不可把字段名和表名作为变量传入,解决办法可以试试在执行前,以字符串替换占位符的形式。

    点赞 评论 复制链接分享
  • surl61240 surl61240 3年前

    需要把问题描述得再清楚点,或者把你的这部分代码贴出来,看看

    点赞 评论 复制链接分享
  • qq_30908729 码上敲享录 3年前

    请问你的sql是定义在哪里的,比如java代码中?存储过程?触发器?

    点赞 评论 复制链接分享
  • sbnth sbnth 3年前

    这要求是无法实现的,不过你可以在获取数据后,自己对value的值再处理一下,根据value的值,放到不同的属性中去就可以。

    点赞 评论 复制链接分享
  • asymptotic_1234 asymptotic_1234 3年前

    计算结果值,得放前边吧;你这个有点行转列的意思,用case when ,这个就跟if else 条件判断一样,你试试!

    点赞 评论 复制链接分享