SQL与加入SQLServer2005
假设我在SQL Server中有两个表,一个是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脚本 从我对您的问题的理解来看
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!)