0

我有一个问题,我有基于日期和时间创建的表,该表是在我没有编写的 SP 中创建的。无论如何,每次创建这些表时都需要对其进行计数。

到目前为止,我所做的是创建一个具有这些名称的表,并添加了一个计数字段。表看起来像这样,名为 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 回答