如何 remove/rename SQL 中的重复列(不是重复行)

How to remove/rename a duplicate column in SQL (not duplicate rows)

当尝试执行从 Sybase 到 Microsoft 的 OPENQUERY 时 SQL 我 运行 遇到错误:

Duplicate column names are not allowed in result sets obtained through OPENQUERY and OPENROWSET. The column name "PatientID" is a duplicate.

我建立的查询根据相似的 admissionID 和 patientID 连接了 2 个表。

例如:

PatID   AdmID   Loc  PatID  AdmID   Doctor 
1         5      NC    1      5      Smith 
2         7      SC    2      7      Johnson

当然,真正的查询包含的信息远不止这些。

是否有重命名或删除 AdmID 和 PatID 列之一的好方法?

我尝试过:

SELECT * INTO #tempTable
ALTER #tempTable
DROP COLUMN PatID

这不起作用,因为 PatID 不明确。

我也尝试过:

SELECT firstTable.PatID as 'pID', * FROM...

这也不行。

您必须为两个重复的列之一添加别名,并至少为其中一个表(您在其列上使用了别名的表)明确指示 select 中的特定列:

 SELECT firstTable.PatID as 'pID', firstTable.column2, secondTable.* FROM...

注意,我仍然在 secondTable 上使用了通配符。

然而....

我会完全避免使用 * 通配符,并尝试始终准确指明您需要的列。

结果集中允许重复和缺失的列名称,但 table 定义中不允许(尽管给出了错误消息,但看起来在这种情况下甚至不允许在结果集中出现它们) .因此,如果发生其中任何一种情况,则不能使用 SELECT * 结构。您需要指定字段,以便您可以控制结果集中出现的字段名称。

SELECT *
INTO   #TempTable
FROM   OPENQUERY('SELECT tab1.Field1, tab1.Field2, tab2.Field12...');