gpt4 book ai didi

sql - 根据不断变化的数据值创建交替的 0 和 1 值

转载 作者:行者123 更新时间:2023-12-03 09:24:18 25 4
gpt4 key购买 nike

我的sql数据库中有数据,需要创建changeControl值。

data   changeControl
M-0101 0
M-0101 0
M-02 1
M-03 0
OT-014 1
OT-014 1
M-228 0
M-228 0

有什么方法可以根据数据创建此changeControl值吗?

最佳答案

有一个简单的方法,但这取决于您的数据库。

在 SQL Server 和 Oracle 中,您可以使用 DENSE_RANK() 来获取值的顺序,使用它您将获得相同值的相同数字

在 SQL Server 中

SELECT data
, (DENSE_RANK() OVER (ORDER BY data) - 1) % 2 changeControl
FROM Table1

在Oracle中,%不存在,我们需要使用函数MOD()

SELECT data
, MOD((DENSE_RANK() OVER (ORDER BY data) - 1), 2) changeControl
FROM Table1

在MySQL中没有DENSE_RANK,但是还有另一种方法来获取结果

SELECT data, changeControl
FROM (SELECT @last
, data
, @id := CASE WHEN @last <> data THEN 1 - @id
WHEN @last = data THEN @id
ELSE 0
END changeControl
, @last:= data
FROM Table1
, (SELECT @id := 0) a) b

如果您不介意额外的列,您可以直接运行子查询。

附注:如果您没有指定您正在使用的数据库,我们就必须猜测。

关于sql - 根据不断变化的数据值创建交替的 0 和 1 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24568669/

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