从SQL查询获取别名表名称

时间:2020-03-19 09:13:44

标签: sql-server tsql sql-server-2016

给出下表:

CREATE TABLE #TestTable
(
    Code varchar(10) NOT NULL,
    Parent varchar(10) NULL
);

INSERT INTO #TestTable
SELECT 'Parent', Null UNION ALL
SELECT 'Child', 'Parent';

我希望能够进行转换:

SELECT * 
FROM #TestTable child
INNER JOIN #TestTable parent ON ( parent.Code = child.Parent );

对此:

SELECT child.Code, child.Parent, parent.Code, parent.Parent
FROM #TestTable child
INNER JOIN #TestTable parent ON ( parent.Code = child.Parent );

使用sp_describe_first_result_set,我可以通过使用以下语句来关闭:

EXEC sp_describe_first_result_set
N'SELECT * 
FROM #TestTable child
INNER JOIN #TestTable parent ON ( parent.Code = child.Parent )', NULL, 2;

,但是它将以#TestTable而不是child/parent的形式返回源表。

1 个答案:

答案 0 :(得分:1)

如果您唯一关心的是查看哪个表是源表,则可以将数据拆分为2个临时表,这样您将影响系统存储过程调用返回的source_table。

CREATE TABLE #TestTable
(
    Code varchar(10) NOT NULL,
    Parent varchar(10) NULL
);

INSERT INTO #TestTable
SELECT 'Parent', Null UNION ALL
SELECT 'Child', 'Parent';

select * into #Parent from #TestTable where code='Parent';

select * into #Child from #TestTable where Code='Child';

EXEC sp_describe_first_result_set
N'SELECT * 
FROM #Child child
INNER JOIN #Parent parent ON ( parent.Code = child.Parent )', NULL, 2;


drop table #TestTable, #Parent, #Child;

enter image description here

相关问题