通过选择行之间两个不同字段的最大值来组合表的两行

时间:2017-07-31 08:45:15

标签: sql sql-server

我有一张与此类似的表:

prompt

我需要将所有不同的公司作为单行,其中每个公司的 COMPANY | DESCRIPTION | CODE_A | CODE_B ----------------------------------------------------- ABC | XYZ | 123 | 0 ABC | XYZ | 0 | 987 DEF | UVW | 0 | 654 GHI | RST | 0 | 321 GHI | RST | 456 | 0 CODE_A的最大价值,CODE_B的值保持不变适用于所有公司。

结果表如下所示:

DESCRIPTION

2 个答案:

答案 0 :(得分:0)

简单的max()和分组

select code, description, max(code_a), max(code_b)
from MyTable
group by code, description

答案 1 :(得分:0)

使用Window功能

SELECT DISTINCT COMPANY, 
        [description],
        max(CODE_A) OVER(PARTITION by COMPANY,[description] Order by COMPANY) AS CODE_A,
        max(CODE_B) OVER(PARTITION by COMPANY,[description]  Order by description) AS CODE_B
from cte