【问题标题】:Sql create a table based on a cell valuesql根据单元格值创建表
【发布时间】:2013-05-30 09:12:18
【问题描述】:

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

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

【问题讨论】:

  • “我有一个问题,我的表是根据日期和时间创建的” - 这很少是一个好的设计......这就是日期列的用途!

标签: sql count populate


【解决方案1】:

更新ausemail 表中的count

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

【讨论】:

  • @user2446846 很高兴它对您有所帮助 :) 如果您正在寻找它,请考虑accept 的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 2022-07-20
  • 2021-03-11
  • 1970-01-01
相关资源
最近更新 更多