给出下表:
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
的形式返回源表。
答案 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;