使用GROUP BY和UNION

时间:2016-05-31 11:13:28

标签: sql sql-server group-by

我有一张桌子:

CODIGO  NOME     VIEW    EDIT
1       TESTE      1      1
1       TESTE      0      1
3       TESTE3     0      0
3       TESTE3     1      0
5       TESTE5     1      0
5       TESTE5     0      1

我是否构建了一个查询以在SQL SERVER中获得以下结果?

结果:

CODIGO    NOME   VIEW   EDIT
1         TESTE   1       1
3         TESTE3  1       0
5         TESTE5  1       1

4 个答案:

答案 0 :(得分:0)

使用MAX():

SELECT CODIGO, NOME, MAX(VIEW) AS VIEW, MAX(EDIT) AS EDIT
FROM TABLE
GROUP BY CODIGO, NOME

答案 1 :(得分:0)

看起来你想要CODIGO和NOME分组,同时获得最高价值的VIEW和EDIT。我试试这个:

SELECT CODIGO, NOME, MAX(VIEW) AS VIEW, MAX(EDIT) AS EDIT
  FROM TABLE
GROUP BY CODIGO, NOME
ORDER BY CODIGO, NOME

答案 2 :(得分:0)

以下查询将提供所需的输出: -

select distinct CODIGO,NOME,MAX(cast([VIEW] as int)) OVER ( Partition by CODIGO,NOME) [VIEW],MAX(cast(EDIT as int)) OVER ( Partition by CODIGO,NOME) EDIT     from table_name

输出: -

 CODIGO    NOME   VIEW   EDIT
 1         TESTE   1       1
 3         TESTE3  1       0
 5         TESTE5  1       1

注意:已经为VIEW和EDIT列进行了转换,因为如果你使用它们的位数据类型,那么MAX函数将不支持它。

答案 3 :(得分:-4)

您可以选择不同的。阅读不同的查询。

实施例

select distinct codigo from dual;