sqlserver 如何将 一列数据 平均分配各 A B
时间: 2024-10-18 09:03:36 浏览: 19
SQL Server资料
在SQL Server中,如果你想将一列的数据平均分配到两个新的列A和B中,你可以使用`CASE`语句结合`SUM`和`COUNT`函数来实现。假设原表名为`Table`,需要平均分配的列名是`OriginalColumn`。下面是一个示例查询:
```sql
SELECT
CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) % 2 = 0 THEN OriginalColumn ELSE NULL END AS ColumnA,
CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) % 2 = 1 THEN OriginalColumn ELSE NULL END AS ColumnB
FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum
FROM Table
) subquery
```
这个查询首先对原始数据按某种顺序进行编号(这里是无序的),然后通过`ROW_NUMBER()`模2运算来判断当前行应该放入A列还是B列。如果余数是0,就放在ColumnA;如果是1,就放在ColumnB。
注意,这种方法可能会有空值(NULL)出现在新列中,如果你想要避免空值,可以考虑另一种做法,例如创建一个临时表先存储一半的数据,然后再复制另一半。
阅读全文