Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql server中,如何在0和1值之间切换?_Sql_Sql Server_Tsql_Sql Order By_Window Functions - Fatal编程技术网

在sql server中,如何在0和1值之间切换?

在sql server中,如何在0和1值之间切换?,sql,sql-server,tsql,sql-order-by,window-functions,Sql,Sql Server,Tsql,Sql Order By,Window Functions,我想创建一个选择,它将在1和0之间交替 我的桌子看起来像那样 id1 id2 al 11 1 1 40 1 0 12 1 0 237 1 1 id1 id2 al 40 1 0 11 1 1 12 1 0 237 1 1 但我想让它变成那样 id1 id2 al 11 1 1 40 1

我想创建一个选择,它将在1和0之间交替

我的桌子看起来像那样

id1    id2    al
11     1      1
40     1      0
12     1      0
237    1      1
id1    id2    al
40     1      0
11     1      1
12     1      0
237    1      1
但我想让它变成那样

id1    id2    al
11     1      1
40     1      0
12     1      0
237    1      1
id1    id2    al
40     1      0
11     1      1
12     1      0
237    1      1
我想在表中保留相同的值,但我只想将行切换到0和1之间

select *
from mytable
order by row_number() over(partition by al order by id1), al
这将交替使用
0
1
值-如果两个组的行数不同,那么,一旦最小的组耗尽,另一个组中的所有剩余行将显示在结果集的末尾

我不确定您要使用哪一列对每个组中的行进行排序-我假设
id1
,但您可能希望根据实际需要更改该列。

考虑:

select *
from mytable
order by row_number() over(partition by al order by id1), al
这将交替使用
0
1
值-如果两个组的行数不同,那么,一旦最小的组耗尽,另一个组中的所有剩余行将显示在结果集的末尾


我不确定您希望使用哪一列来对每个组中的行进行排序-我假设
id1
,但您可能希望将其更改为您的实际需求。

这里的目的是什么?@DervişKayımbaşıoğlu这是为了之后的代码。你知道怎么做吗?这里的目的是什么?@DervişKayımbaşıoğlu这是为了之后的代码。你知道怎么做吗?