0
我有一个表格,其中一个字段中的数据是另一个表格中的字段名称。如何在两个表格之间动态链接
我想根据该字段从第二个表中提取数据。 例如:
- 表
A
有一个称为FldName
柱。FldName
的值为Number001
。 - 表
B
有一个名为Number001
的列。
我想提取B.Number001
的值。
不太熟悉SQL如此详细的答案,赞赏。
我有一个表格,其中一个字段中的数据是另一个表格中的字段名称。如何在两个表格之间动态链接
我想根据该字段从第二个表中提取数据。 例如:
A
有一个称为FldName
柱。 FldName
的值为Number001
。B
有一个名为Number001
的列。我想提取B.Number001
的值。
不太熟悉SQL如此详细的答案,赞赏。
示例表
CREATE TABLE TABLEA (ID INT , FldName SYSNAME)
GO
INSERT INTO TABLEA VALUES(1 , 'Number001')
GO
CREATE TABLE TABLEB (Number001 INT)
GO
INSERT INTO TABLEB VALUES (1),(2),(3)
GO
过程获取数据
CREATE PROC get_DataFromTableB
@FieldID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
Declare @Sql Nvarchar(max), @ColName SYSNAME;
IF (@FieldID IS NULL)
BEGIN
SET @Sql = N'SELECT * FROM TABLEB'
Exec sp_executesql @Sql
END
ELSE
BEGIN
SELECT @ColName = FldName FROM TABLEA
SET @Sql = N'SELECT '+QUOTENAME(@ColName)+' FROM TABLEB'
Exec sp_executesql @Sql
END
END
过程调用
您可以通过程序的ID
0从TableA
或根本没有参数。
如果ID获得通过,也只能从表B返回列,如果没有ID获得通过,只会做一个select * from TableB
要获得唯一Number001
场从tableB的
Exec get_DataFromTableB 1
要获得所有来自桌面B的字段B
Exec get_DataFromTableB
请自己帮忙,改变模式,为您节省很多麻烦。 –
首先,感谢您花时间回答我的问题。我会试试看。其次,我同意这个模式是可怕的。但它不是我的。我正在尝试写一个基于软件包的报告:( – EMarkus