根据相同的Id - SQL Server

时间:2017-07-31 12:14:48

标签: sql sql-server

我正在尝试将同一Id中的连续相同的行缩减为单行。我尝试了复制,但随后它将同一个Id中的所有非连续相同的出现替换为单个行。此外,消息的顺序很重要。输入和所需输出如下所示。有没有办法达到这个理想的结果?

由于

输入数据

Id   Result   Message
----------------------
1     0        a 
1     0        p 
1     0        p
1     0        p
1     0        d
1     0        p 
1     0        p 
1     0        f
1     0        p
2     1        a
2     1        a
2     1        a
2     1        f
2     1        h
2     1        b
2     1        b
3     0        d
3     0        d
3     0        d
3     0        c
3     0        c

期望的输出

Id   Result   Message
----------------------
1     0        a 
1     0        p 
1     0        d
1     0        p  
1     0        f
1     0        p
2     1        a
2     1        f
2     1        h
2     1        b
3     0        d
3     0        c

2 个答案:

答案 0 :(得分:1)

考虑@ GordonLinoff的注释,如果你要包含一个指定行所需顺序的列,例如,

Id   Result   Message   Order
1     0        a         1
1     0        p         2 
1     0        p         2
1     0        p         2
1     0        d         3
1     0        p         4
1     0        p         4
1     0        f         5
1     0        p         6
2     1        a         7
2     1        a         7
2     1        a         7
2     1        f         8
2     1        h         9
2     1        b        10
2     1        b        10
3     0        d        11
3     0        d        11
3     0        d        11
3     0        c        12
3     0        c        12

然后,您可以使用以下查询轻松获得所需的结果:

SELECT distinct Id, Result, Message, Order
FROM Table_A

OUPUT:

Id   Result   Message   Order
1     0        a         1
1     0        p         2 
1     0        d         3
1     0        p         4
1     0        f         5
1     0        p         6
2     1        a         7
2     1        f         8
2     1        h         9
2     1        b        10
3     0        d        11
3     0        c        12

答案 1 :(得分:0)

我猜你在寻找Group by?

SELECT col1,col2,col3 FROM Table GROUP BY col1,col2,col3;

结果的顺序将是您传递的列的顺序。