我有一个问题,我有基于日期和时间创建的表格。时间,这个表是在我没写的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%')
任何想法都会非常有用。
答案 0 :(得分: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 演示。