我正在使用SQL Server2014。我已经动态生成了看起来像这样的SQL(为简便起见简化了):
with CTE as
(
select field as [field], field as [Field]
from myTable
)
select [field], [Field]
from CTE
但是上述情况会导致此错误:
为“ CTE”多次指定了“字段”列。
我希望/希望它能起作用,因为2列实际上是唯一的(考虑到大小写)。无论如何,我们是否可以要求SQL(可能通过某些SET选项)将它们视为唯一?
我动态生成的SQL非常复杂,很难识别和复制这些“重复项”。
答案 0 :(得分:1)
从理论上讲,您可以将数据库的排序规则更改为区分大小写的选项。区分大小写的数据库/服务器排序规则还将考虑别名的区分大小写。不会对表进行列排序,而在选择中对列进行排序。
Changing database/server collation will change a whole lot else though。解决别名问题将是非常极端的更改,我怀疑这对您来说是可行的解决方案。
也就是说,如果动态SQL能够看到别名field
已经存在并将大写别名Field
用于同一列的下一个实例,我想您可以简单地进行调整可以是field1
,field2
等。您始终可以将它们重新别名为外部/最终选择中想要的任何东西,它们只需要在CTE查询中是唯一的即可。