Sql根据单元格值创建表

时间:2013-06-04 04:41:36

标签: sql count populate

我有一个问题,我有基于日期和时间创建的表格。时间,这个表是在我没写的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%')

任何想法都会非常有用。

1 个答案:

答案 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 演示。