SQL与加入SQLServer2005

SQL与加入SQLServer2005,sql,sql-server-2005,Sql,Sql Server 2005,假设我在SQL Server中有两个表,一个是Emp,另一个是FieldsInfo Emp表中的数据如下所示 FieldsInfo表格中的数据如下所示 现在我想以这样一种方式连接这两个表:SQL Server将显示Emp表中的数据,但字段名将根据关系显示在FieldsInfo表中 我的意思是,Employee ID将显示为字段名而不是ID,Salary将显示为字段名而不是Sal,但值将与Emp表一样 加入后,我无法生成这种类型的输出。因此,请帮助使用正确的SQL脚本 从我对您的问题的理解来看

假设我在SQL Server中有两个表,一个是
Emp
,另一个是
FieldsInfo

Emp
表中的数据如下所示

FieldsInfo
表格中的数据如下所示

现在我想以这样一种方式连接这两个表:SQL Server将显示
Emp
表中的数据,但字段名将根据关系显示在
FieldsInfo
表中

我的意思是,
Employee ID
将显示为字段名而不是ID,
Salary
将显示为字段名而不是Sal,但值将与
Emp
表一样

加入后,我无法生成这种类型的输出。因此,请帮助使用正确的SQL脚本


从我对您的问题的理解来看,谢谢您,您试图实现的目标是不可能的,因为您需要一个不受支持的动态AS子句

例如:

SELECT EmpName AS *(SELECT TOP 1 Description FROM FieldsInfo WHERE FieldName = 'EmpName')*
FROM Emp

我想您应该尝试在实际使用结果的任何应用程序中进行映射。如果您需要SQL Server中的输出,我不确定临时表是否会起作用。

从我对您的问题的理解来看,您试图实现什么是不可能的,因为您需要一个不受支持的动态AS子句

例如:

SELECT EmpName AS *(SELECT TOP 1 Description FROM FieldsInfo WHERE FieldName = 'EmpName')*
FROM Emp

我想您应该尝试在实际使用结果的任何应用程序中进行映射。如果您需要SQL Server中的输出,我不确定临时表是否会起作用。

您可以使用FieldsInfo表动态构建SQL语句

declare @SQL nvarchar(100)
set @SQL = ''

select @SQL = @SQL + FieldName + ' as [' + Description + '], '
from FieldsInfo
where TableName = 'Emp'

set @SQL = 'select '+ left(@SQL, len(@SQL)-1) + ' from Emp'

exec sp_executesql @SQL

您可以使用FieldsInfo表动态构建SQL语句

declare @SQL nvarchar(100)
set @SQL = ''

select @SQL = @SQL + FieldName + ' as [' + Description + '], '
from FieldsInfo
where TableName = 'Emp'

set @SQL = 'select '+ left(@SQL, len(@SQL)-1) + ' from Emp'

exec sp_executesql @SQL

我不会尝试使用字段名表,因为这样会增加额外的复杂性

SELECT 
    ID [Employee ID], 
    EmpName [Employee Name], 
    Sal [Salary] 
FROM 
    Emp

我不会尝试使用字段名表,因为这样会增加额外的复杂性

SELECT 
    ID [Employee ID], 
    EmpName [Employee Name], 
    Sal [Salary] 
FROM 
    Emp

如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮({}),以很好地格式化和语法突出显示它!如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮({}),以很好地格式化和语法突出显示它!我认为你的设计很糟糕。将字段命名为您希望命名的名称,并完全删除字段信息表。否则,您的所有查询都将使用动态sql,这很难编写好,也很难进行正确的测试。这是一个两败俱伤的局面,请在桌上解决它。(永远不要说出ID字段ID!)我认为你的设计很糟糕。将字段命名为您希望命名的名称,并完全删除字段信息表。否则,您的所有查询都将使用动态sql,这很难编写好,也很难进行正确的测试。这是一个两败俱伤的局面,请在桌上解决它。(并且永远不要命名ID字段ID!)