0

SQL sprocを開発していて、各テーブルの行数を返したいです。このステートメントを書き直して、以下の各テーブルの行数をリストするようにするにはどうすればよいですか?

SELECT COUNT(*)
FROM [test_setup_details_form_view] [tsdf]
JOIN [test_setup_header_form_view] 
    ON [test_setup_header_form_view].[test_setup_header_id] 
        = [tsdf].[test_setup_header_id]
JOIN [test_header_rv] [th] with(nolock) 
    ON [th].[test_setup_header_id] 
        = [test_setup_header_form_view].[test_setup_header_id]
JOIN [test_details_answers_expanded_view] [tdae] 
    ON [tdae].[test_setup_details_id] = [tsdf].[test_setup_details_id] 
        AND [th].[test_header_id] = [tdae].[test_header_id]
JOIN [event_log_rv] [e] 
    ON [e].[event_log_id] = [tdae].[event_log_id]

このステートメントを実行すると、すべての結合後の合計行が表示されます。

4

3 に答える 3

3

結合に関係なく、これらの各テーブルのカウントを取得しようとしている場合:

SELECT
  OBJECT_SCHEMA_NAME([object_id]),
  OBJECT_NAME([object_id]),
  c
FROM
( 
  SELECT [object_id],
    c = SUM(row_count)
  FROM
    sys.dm_db_partition_stats -- no NOLOCK necessary
  WHERE
    index_id IN (0,1)
    AND OBJECT_NAME([object_id]) IN
    ( 
      N'test_setup_details_from_view',
      N'test_setup_header_from_view',
      ... etc etc. ...
    )
  GROUP BY [object_id]
) AS x;
于 2013-01-18T20:55:22.547 に答える
1

count (distinct <columnname>)カウントする必要がある各テーブルの一意の列で使用します。

于 2013-01-18T20:31:10.420 に答える
-2

各テーブルから?では、メタデータテーブルを使用してみませんか?

メタデータテーブルにすでに存在するコードで何かを行おうとしています。

Select 
    schema_name(schema_id) + '.' + t.name as TableName
,   i.rows
from sys.tables t (nolock) 
    join sys.sysindexes i (nolock) on t.object_id = i.id 
        and i.indid < 2
于 2013-01-18T20:31:55.127 に答える