使用表格结果查询(结果中的表格名称)中的精选前100名

时间:2018-10-01 20:17:12

标签: sql sql-server

CREATE TABLE ColumnResults 
(
     TableName VARCHAR(60)
)
GO

INSERT INTO ColumnResults
    SELECT name 
    FROM sysobjects 
    WHERE id IN (SELECT id FROM syscolumns 
                 WHERE name like 'EmployeeID%')
    ORDER BY name

SELECT * FROM ColumnResults

我现在想获取ColumnResults中的结果集,并用它来查询以下内容:

SELECT TOP 100 
FROM (TABLE NAME FROM INITIAL RESULT SET or "ColumnResults" goes Here)

继续对每个结果行

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试一下-

DECLARE db_cursor CURSOR FOR 
SELECT * FROM ColumnResults

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @name  

WHILE @@FETCH_STATUS = 0  
BEGIN  

      select top 100 from @name

      FETCH NEXT FROM db_cursor INTO @name 
END 

CLOSE db_cursor  
DEALLOCATE db_cursor 

答案 1 :(得分:0)

您将要使用以下内容:

DROP TABLE #TableName

CREATE TABLE #TableName
(
    TableName VARCHAR(200)
)

INSERT INTO #TableName 
(
    TableName
)

SELECT name FROM sys.objects
WHERE name LIKE 'employeeID%'

DECLARE @TableCount AS INT = (SELECT COUNT(*) FROM #TableName)

WHILE @TableCount > 0

BEGIN 

DECLARE @TableName AS VARCHAR(200) = (SELECT TOP 1 TableName FROM #TableName)

DECLARE @SQL NVARCHAR(200)

SET @SQL = N'SELECT TOP 100 * FROM ' + '[dbo]' + '.' + @TableName + ''
--PRINT @SQL

EXEC (@SQL)

SET @TableCount = @TableCount - 1

DELETE FROM #TableName WHERE TableName IN (SELECT TOP 1 TableName FROM #TableName )

END

确保使用正确的架构代替[dbo]。我也看不到您有一个名为employeeID的表名。我认为这可能是表格中的一列。因此,也许只是将Employee作为表名进行过滤。