【问题标题】:T-SQL - get distinct columns from table with multiple columns with the same nameT-SQL - 从具有多个同名列的表中获取不同的列
【发布时间】:2016-02-16 15:18:33
【问题描述】:

使用 T-SQL 的 MS SQL 2014

我有一个连接到 Oracle 服务器的链接服务器,该服务器具有多个表和视图,这些表和视图包含多个同名的列。列中的值包含相同的数据。

SELECT
SERVER_NAME,
SERVER_NAME,
SERVER_NAME,
IP_ADDRESS,
IP_ADDRESS,
IP_ADDRESS,
IP_ADDRESS,
PHY_LOCATION,
PHY_LOCATION,
PHY_LOCATION,
OS_VERSION,
OS_VERSION
FROM SVR_TABLE

是否有一个我可以执行的查询,它会给我一个表中不同的列名?我试图避免进入每个表并手动将不同的列放入表中。

SELECT
SERVER_NAME,
IP_ADDRESS,
PHY_LOCATION,
OS_VERSION
INTO [SQL_SVR_DB].[dbo].[SVR_TABLE]
FROM [ORACLE_SVR]..[SCHEMA_NAME].[SVR_TABLE]

【问题讨论】:

  • 表和视图的同名列不能超过一列。
  • 也许为您的列设置别名会有所帮助?查看 Information_schema 是否只需要列名。

标签: sql sql-server tsql


【解决方案1】:

根据您提供的第二个查询,我认为您要查找的是 别名

维基百科将 SQL 别名定义为:

“别名是 SQL 的一个特性,大多数(如果不是全部)都支持, 关系数据库管理系统(RDBMS)。别名提供 数据库管理员以及其他数据库用户,使用 能够减少查询所需的代码量,并使 查询更容易理解。此外,混叠可以用作 保护数据库字段真实名称的混淆技术。”

您可以在这里阅读更多信息:https://en.wikipedia.org/wiki/Alias_%28SQL%29

您要查找的查询需要写成:

SELECT      SERVER_NAME,
            IP_ADDRESS,
            PHY_LOCATION,
            OS_VERSION
FROM        [SQL_SVR_DB].[dbo].[SVR_TABLE] sqlTable
INNER JOIN  [ORACLE_SVR].[SCHEMA_NAME].[SVR_TABLE] oraTable
ON          sqlTable.ColumnName = oraTable.ColumnName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 2020-03-30
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多