2013-06-04 93 views
0

我有一个问题,我有是基于日期&时间创建的表的表,因为我没有写SP创建该表。无论如何,每次创建时都需要对这些表进行计数。SQL创建基于单元格值

我迄今所做的是创建具有这些名称的表,并增加了一个计数字段。 表看起来是这样的,被称为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%') 

任何想法都会非常有帮助。

+3

“我有一个问题,即我有一个基于日期和时间创建的表” - 这是很少一个好的设计....这是一个日期列是什么! –

回答

0

要在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 

更新count列。如果你确切地知道该模式,你可以做这样的事情

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

+0

工作的伟大与图案非常感谢 – user2446846

+0

@ user2446846我很高兴它帮助:)如果这是你要找的,请考虑到** [接受](http://meta.stackexchange.com/questions/5234 /如何接受答案)**答案。 – peterm