在 SQL 上获取值“0”和“1”交替行
我正在使用 SQL Server 2015,我有一个包含值“name”列表的表,我需要添加一个列,当“name”列更改时,该列可以交替使用值“0”和“1”。这对我很重要,因为我在 excel 上导入了这个查询,我将使用条件格式读取“trig”的值来格式化行。这是一个期望结果的例子。
+-----+--------+
| trig| name |
|-----+--------|
| 0 | 0400 |
| 0 | 0400 |
| 1 | 0150 |
| 1 | 0150 |
| 1 | 0150 |
| 0 | 0111 |
| 0 | 0111 |
+-----+--------+
谢谢
回答
你可以DENSE_RANK在这里使用:
SELECT name, (DENSE_RANK() OVER (ORDER BY name) - 1) % 2 AS trig
FROM yourTable
ORDER BY name;
演示
这里的逻辑是,DENSE_RANK将为每组名称记录返回一个从 1 开始的值。我们可以取这个值的 mod 2 来为每个名称交替获得 0 或 1。