结合结果集得到一行

时间:2014-04-17 10:11:58

标签: sql sql-server sql-server-2008

我有一个表的查询,它将输出返回为

AccessRightID   NodeID  NodeName    CanAdd  CanEdit CanDelete   CanView
1                  2    Customer       0       0        0          1
2                  2    Customer       1       1        0          0
3                  2    Customer       0       0        0          0
4                  2    Customer       0       0        0          0

现在我想要组合并只获得一行。不需要AccessRightId。 最终的输出应该是。

NodeID  NodeName    CanAdd  CanEdit CanDelete   CanView
2       Customer        1        1        0         1

,即如果任何值包含1则为1,否则为0。

plz建议我是sql的新手。

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT
NodeId
,NodeName
,max(convert(int,CanAdd))
,max(convert(int,CanDelete))
,max(convert(int,CanEdit))
,max(convert(int,CanView))
from yourtable
group by
NodeId, NodeName

当然可以通过其他方式完成,但这听起来最简单。