0

日付と時刻に基づいて作成されたテーブルがあるという問題があります。このテーブルは、作成していない SP で作成されています。いずれにせよ、これらのテーブルが作成されるたびに、これらのテーブルの数を取得する必要があります。

ここまでで、これらの名前を持つテーブルを作成し、Count フィールドを追加しました。テーブルは次のようになり、SP.DBO.AUSEMAIL と呼ばれます。

SourceTable                                          Count
SP.DBO.VIP_BPAU_00030_20130531_092027
SP.DBO.ADV_BPAU_00030_20130531_092027

ここで基本的に、SP.DBO.VIP_BPAU_00030_20130531_092027 と SP.DBO.ADV_BPAU_00030_20130531_092027 のカウントを取得し、上記のテーブルに入力するクエリを作成する必要があります。

テーブルが毎日何と呼ばれるかはわかりませんが、これを完全に自動化するために取り組んでいるため、これらの各ファイルの数だけを数えることはできません。

私はこのようなことを試しましたが、どこにも行きません。

select count(*)
from top 1 (select sourcetable
from SP.DBO.AUSEMAIL
where source_table like 'SP.DBO.VIP_BPAU%')

どんなアイデアでも非常に役に立ちます。

4

1 に答える 1

0

テーブルcountの列を更新するにはausemail

UPDATE a
   SET a.count = i.rowcnt
  FROM sysindexes AS i INNER JOIN sysobjects AS o 
    ON i.id = o.id JOIN ausemail a
    ON o.name = a.source_table

パターンを正確に知っていれば、このようなことができます

SELECT o.name source_table, 
       i.rowcnt count
  FROM sysindexes AS i INNER JOIN sysobjects AS o 
    ON i.id = o.id 
 WHERE o.name LIKE '___!_BPAU!_%' ESCAPE '!' -- < adjust the pattern as needed

出力例:

|                   SOURCE_TABLE | COUNT |
------------------------------------------
| VIP_BPAU_00030_20130531_092027 |     4 |
| ADV_BPAU_00030_20130531_092027 |     2 |

これがSQLFiddle のデモです。

于 2013-06-04T05:01:39.493 に答える