gpt4 book ai didi

sql-server - 将数据分布到两列中

转载 作者:行者123 更新时间:2023-12-02 23:15:06 24 4
gpt4 key购买 nike

我正在尝试找出将一列的替代行拆分为两列的最佳优化方法。让我通过一个例子来解释一下

我有以下数据

Source

我想要的结果集

Resultset

在上面的例子中,替代行被转移到一个新列。我已经想出了一个解决方案,但如果我有数百万条记录,它就没有优化。

我的解决方案(未优化)

;WITH RecCtea
AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY (select 1)) rowid FROM tabA ta
)
SELECT a.cola,b.cola FROM (
(SELECT * FROM RecCtea rc WHERE rc.rowid%2 = 0) a JOIN
(SELECT * from RecCtea rc2 where rc2.rowid%2 != 0) b
on a.rowid = b.rowid+1
)

SQLfiddle 不起作用,所以这里是架构

CREATE TABLE tabA (
cola int
);


INSERT tabA
(
cola
)
VALUES
(100),(-100),(200),(-250),(300),(-350),(-400),(NULL)

最佳答案

试试这个:

SELECT [0] AS col1, [1] AS col2
FROM
(
SELECT cola,
(ROW_NUMBER() OVER (ORDER BY (select 1)) + 1) / 2 AS rn,
ROW_NUMBER() OVER (ORDER BY (select 1)) % 2 rowid
FROM tabA
) AS src
PIVOT (
MAX(cola) FOR rowid IN ([0],[1])) AS pvt

输出:

col1    col2
------+------
-100 | 100
-250 | 200
-350 | 300
NULL | -400

关于sql-server - 将数据分布到两列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37810199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com