SQL-запрос для получения имени таблицы и количества строк на основе имени столбца » - PullRequest
2 голосов
/ 21 сентября 2010

Я объявил Курсор для получения имен таблиц, а не столбцов в этих таблицах на основе имен столбцов. Пожалуйста, найдите, что приведенное ниже имя таблицы запросов не вставляется. Пожалуйста, предложите.

Create table #t
(
tabname varchar(500),
NoOfRows bigint,
)

Declare @Namee Varchar(500)
Declare @GetName Cursor
Set     @Getname = Cursor for 
Select table_name from information_Schema.columns
where column_name='isactive'Open @Getname
Fetch Next From @Getname into @Namee
While @@Fetch_Status=0
Begin 
--Print @Namee
insert into #t(tabname) SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE  TABLE_NAME =' + @Namee + '
exec ('insert into #t(NoOfRows)  Select count(*) from ' + @Namee + ' where isactive=0')
Fetch Next From @Getname into @Namee
End
Close @GetName
Deallocate @GetName
select * from #t 

Ответы [ 3 ]

2 голосов
/ 21 сентября 2010

Вы можете вставить имя таблицы и количество строк в один INSERT:

EXEC('INSERT INTO #t
         (tabname, NoOfRows)  
      SELECT '''+ @Namee +''', COUNT(*) 
        FROM ' + @Namee + ' 
       WHERE isactive = 0')

То, что у вас есть, не делает никакой связи между именем таблицы и счетчиком, поэтому маловероятно, что вы пропустили таблицу, но сомнительно, что NoOfRows действительно было связано с именем таблицы в записи.

1 голос
/ 21 сентября 2010

Вот лучший способ получить нужные таблицы (не будет проблем с наложением каталогов и схем)

declare @colname varchar(max)
set @colname = 'isactive'

SELECT table_name from information_schema.tables t
  join information_schema.columns c on t.table_catalog = c.table_catalog and    
                                       t.table_schema = c.table_schema and 
                                       t.table_name = c.table_name and 
                                       column_name = @colname
0 голосов
/ 21 сентября 2010

Вы делаете две вставки во временную таблицу, одну для имени таблицы (без счета) и одну для счета без имени таблицы.

См. OMG Ponies для SQL, чтобы заменить ваш и удалить вставку только с именем таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...