如何删除/重命名 SQL 中的重复列(不是重复行)

Non*_*eil 6 sql sql-server sybase

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

通过 OPENQUERY 和 OPENROWSET 获取的结果集中不允许有重复的列名。列名“PatientID”重复。

我构建的查询基于相似的missionID 和病人ID 连接了2 个表。

例如:

PatID   AdmID   Loc  PatID  AdmID   Doctor 
1         5      NC    1      5      Smith 
2         7      SC    2      7      Johnson
Run Code Online (Sandbox Code Playgroud)

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

有没有一种好方法可以重命名或删除 AdmID 和 PatID 列之一?

我尝试过:

SELECT * INTO #tempTable
ALTER #tempTable
DROP COLUMN PatID
Run Code Online (Sandbox Code Playgroud)

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

我也尝试过:

SELECT firstTable.PatID as 'pID', * FROM...
Run Code Online (Sandbox Code Playgroud)

这也行不通。

Ray*_*Ray 3

您必须为两个重复列之一指定别名,并至少在其中一个表(您在其列上使用别名的表)的选择中显式指示特定列:

 SELECT firstTable.PatID as 'pID', firstTable.column2, secondTable.* FROM...
Run Code Online (Sandbox Code Playgroud)

请注意,我仍然在第二个表上使用了通配符。

然而....

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

  • 这是准确但不幸的解决方案。我认为OP和我希望有一些奇迹般的技巧来避免输入一百个列名哈哈...... (3认同)