Click here to Skip to main content
15,924,317 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I want to loop through the tables in a DB and set union dynamically in Sql server.

The output query required will be as below:
SELECT 'Account' ,(SELECT COUNT(*)  FROM Account  )

UNION ALL

--SELECT 'ACCOUNT_20140528_BKP' ,(SELECT COUNT(*)  FROM ACCOUNT_20140528_BKP  )

--UNION ALL

-- SELECT 'ACCOUNTBKP' ,(SELECT COUNT(*)  FROM ACCOUNTBKP  )

--UNION ALL
 SELECT 'AccountStatus' ,(SELECT COUNT(*)  FROM AccountStatus  )


What I have tried:

DECLARE @TableName Varchar(200)                                          
Declare @DateField Varchar(50)                                          
Declare @TableType char(1)      

DECLARE ARCHIVE CURSOR FOR SELECT TableName,DateField,TableType FROM dbo.Archive_config
              
OPEN ARCHIVE fetch next from ARCHIVE into @TableName, @DateField,@TableType                                            
                                            
WHILE @@FETCH_STATUS = 0                                          
BEGIN     

DECLARE @query AS VARCHAR(MAX)='SELECT '+@TableName+' AS Val'
DECLARE @query1 AS VARCHAR(MAX)='SELECT '+@TableName+' AS Val'

PRINT (@query+' UNION  '+@query1) 
--EXEC(@query+' UNION ALL '+@query1) 

END
Posted
Updated 20-Mar-18 3:16am

1 solution

SQL SERVER - How to Find Row Count of Every Table in Database Efficiently? - SQL Authority with Pinal Dave[^]

All you need to do is filter that query to only return the details for the tables you want:
SQL
SELECT
    SCHEMA_NAME(T.schema_id) As SchemaName,
    T.name As TableName,
    SUM(P.rows) As TotalRowCount
FROM
    sys.tables As T
    INNER JOIN sys.partitions As P
    ON P.object_id = T.object_id
    And P.index_id In (0, 1)
WHERE
    Exists
    (
        SELECT 1
        FROM dbo.Archive_Config As A
        WHERE A.TableName = T.Name
    )
GROUP BY
    SCHEMA_NAME(T.schema_id),
    T.name
;
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900