sta*_*ser 1 t-sql sql-server sql-server-2005
基于下表
Name
---------
A
A
A
B
B
C
C
C
Run Code Online (Sandbox Code Playgroud)
我想在此表中添加另一个名为"OnGoing"的列,并且值应该替换为每组名称.只有两个值'X'和'Y'.所以表格看起来像
Name OnGoing
----------------
A X
A X
A X
B Y
B Y
C X
C X
C X
Run Code Online (Sandbox Code Playgroud)
如何编写这样的查询,可以替换每组名称的值.
怎么样的
DECLARE @Table TABLE(
Name VARCHAR(10)
)
INSERT INTO @Table SELECT 'A'
INSERT INTO @Table SELECT 'A'
INSERT INTO @Table SELECT 'A'
INSERT INTO @Table SELECT 'B'
INSERT INTO @Table SELECT 'B'
INSERT INTO @Table SELECT 'C'
INSERT INTO @Table SELECT 'C'
INSERT INTO @Table SELECT 'C'
SELECT *,
CASE
WHEN RowNum % 2 = 0
THEN 'Y'
ELSE 'X'
END
FROM @Table t INNER JOIN
(
SELECT Name,
ROW_NUMBER() OVER (ORDER BY Name) RowNum
FROM @Table
GROUP BY Name
) sub ON t.Name = sub.Name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |