【问题标题】:How to split dataset into multiple subsets and export them to Excel如何将数据集拆分为多个子集并将其导出到 Excel
【发布时间】:2020-11-04 04:49:12
【问题描述】:

我正在尝试将我的最终结果表导出为 SQL Server 中的 Excel 文件,但它并没有真正起作用,因为我的数据太大了。我当前的数据集中有 5,000,000 多个观察值,有没有办法可以将它们分成五个不同的子集?

For example, 
subset1 = first 1,000,000 observations
subset2 = next  1,000,000 observations
subset2 = next  1,000,000 observations
subset2 = next  1,000,000 observations
subset2 = last  1,000,000 observations

我认为这样的事情会起作用,但我不知道如何将接下来的 1,000,000 个数据放入第二个子集中,依此类推。

Select TOP 1000000 *
into Subset1
From Table

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以使用ROW_NUMBER 生成带有偏移量的子集,例如

    WITH cte AS (
        SELECT *, ROW_NUMBER() OVER (ORDER BY some_col) rn
        FROM yourTable
    )
    
    INSERT INTO Subset2 (col1, col2, ..., colN)
    SELECT col1, col2, ..., colN
    FROM cte
    WHERE rn > 1000000 AND rn <= 2000000;    -- e.g. for second subset, etc.
    

    注意“第一”或“第二”子集的概念只有在存在定义该排序的多个列中的一个时才被明确定义。在上面的 sn-p 中,我假设有一个列 some_col 您要用于此目的。您可以将其替换为您认为合适的其他内容。

    【讨论】:

      【解决方案2】:

      @Tim Biegeleisen 实际上提供了一个很好的解决方案,我在这里使用ntile() 提供另一种选择。

      如果您确定要将数据拆分为 5 组,无论有多少行。使用

      select ntile(5) over(order by col) as setnumber
      

      这会将您的行平均分配到 5 个组中。 在MSDN查看更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-14
        • 2022-12-13
        • 1970-01-01
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多