【问题标题】:Alias name is same as column name [closed]别名与列名相同[关闭]
【发布时间】:2012-03-20 12:07:54
【问题描述】:

在 sql server 2008 中,别名与列名相同,因此出现错误列被多次指定。

我无法更改应用程序中断的别名

【问题讨论】:

  • 您可能引用了没有别名和使用别名的列(或者正在加入具有相同列名的表)。没有看到查询就无法判断。
  • 我已经发布了查询
  • 这不是 sql-server 的问题。这是您的查询的问题。问题标记不正确。人们希望在回答之前看到您的查询
  • 已添加查询,您可以查看查询
  • 查询已被编辑 - 考虑恢复它。

标签: sql-server


【解决方案1】:

您已将两列作为已发布的别名。

a.published,

CASE a.type
WHEN N'component' THEN a.published+2*(e.enabled-1)
WHEN N'url' THEN a.published+2
WHEN N'alias' THEN a.published+4
WHEN N'separator' THEN a.published+6 END AS published,

【讨论】:

  • 列名正确,但您在case 语句中再次将其指定为列名。将 Case 语句列名称更改为 Publish,它应该可以工作
  • 谢谢 Jaques,那么我用 a_published 重命名别名的查询的可能解决方案是什么,但它似乎不是正确的解决方案
  • 您将需要确定调用进程期望“已发布”字段包含什么,是期望存储在 a.published 中的值还是您的案例语句的输出之一,即组件、url 、别名或分隔符。
【解决方案2】:

您不能返回具有相同别名的两列。每列必须有一个唯一的名称。

如果您需要返回 BOTH a.published 和 CASE 逻辑的结果,则需要为其中一个指定不同的名称。

调用应用程序将要求列“已发布”,您想为它们提供“已发布”的什么?至于另一件事,他们必须知道用不同的名字来索取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 2022-01-23
    • 2016-09-13
    • 2012-03-20
    • 2017-02-12
    • 2018-09-23
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多