【问题标题】:Separate resultset from hashtable into 3 tables将结果集从哈希表分成 3 个表
【发布时间】:2011-10-17 21:12:14
【问题描述】:

我正在使用SQL Server 2008 并有一个hashtable,其中包含有关邮政编码及其相关数据的数据。如果我计算记录 groupby 邮政编码是这样的

5000 HA
6000 NW
4000 S2

我想知道有没有办法将数据分成三个单独的表。 如果我们运行第一组记录 HA 看起来像

Table1               Table2                   Table3
1st record of HA     2nd record of HA       3rd record of HA
4th record of HA     ....etc

是否可以使用光标或任何建议来实现?

任何帮助将不胜感激

谢谢

【问题讨论】:

  • 您似乎在这里尝试完成的是一种数据平衡。如果是这种情况,我认为通过创建不同的表这不是正确的方法。您应该在单个表中为此使用 NTILE 之类的东西。
  • 您如何定义谁是第一条记录或第二条记录?您希望根据什么标准对结果进行排序?。另外,您总是想在 3 个表上划分结果?或者那只是因为邮政编码上有 3 个组?
  • @Lamak:没有具体的条件来定义第一个或第二个。只需将数据分成三个单独的表(大约有 5000 多条记录)

标签: sql sql-server function stored-procedures cursor


【解决方案1】:

我无法想象我会做这种事情的任何可能原因。分成 3 个表会使数据以后更难查询。但是,如果您坚持下去,那么我会按照以下方式做一些事情:

构建一个包含三列 A、B、C 的映射表。用您希望在每个表中添加的值填充该表。应该看起来与此类似,但会超出您需要的最大值。

A   B   C
1   2   3
4   5   6
7   8   9
10  11  12

使用 row_number 创建一个临时表(不要忘记排序),以便您现在可以分辨哪条记录是第一个 HA,哪个是第二个等。现在对您生成的数字执行 3 次插入连接每一列 ineh 映射表。如果他们加入A列插入表A,列B,插入表B,列c插入表c。

【讨论】:

    猜你喜欢
    • 2017-11-13
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多