t-sql分组查询

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)

如何编写这样的查询,可以替换每组名称的值.

Adr*_*der 5

怎么样的

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)