在表中存储COUNT个值

时间:2014-03-04 11:56:16

标签: sql sql-server-2008

我有一个表格,其中包含以下(大规模简化)行的数据:

User | Value
-----|------
UsrA |   100
UsrA |   102
UsrB |   100
UsrA |   100
UsrB |   101

并且,由于远非模糊的原因,我需要将每个值的COUNT存储在一个表中以供将来检索 - 最后用

之类的东西
User | Value100Count | Value101Count | Value102Count
-----|---------------|---------------|--------------
UsrA |             2 |             0 |             1
UsrB |             1 |             1 |             0

但是,最多可能有255个不同的Value s - 意味着可能有255个不同的ValueXCount列。我知道这是一种可怕的做事方式,但是有一种简单的方法可以将数据转换为可以轻松INSERT到目标表中的格式吗?有没有更好的方法来存储每个用户的COUNT值(不幸的是我确实需要存储这些信息;每次都不能从源表中获取它)?

2 个答案:

答案 0 :(得分:2)

整个事情并不是很漂亮,但是你知道,而不是你的255列表我会考虑设置另一个表:

User | Value | CountOfValue

并在用户和值上设置主键。

然后,您可以将给定用户/值组合的计数插入CountOfValue字段

正如我所说的那样,设计很糟糕,感觉你会从头开始,正常化并做现场直播会更好。

答案 1 :(得分:0)

查看索引视图。您可以使用完整性自动维护表,作为奖励,它可以在已经对该数据计数(*)的查询中使用。