如何 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...');
当尝试执行从 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...');