在多行上组合位字段值(逻辑或累积)

时间:2014-12-13 05:32:57

标签: sql-server sql-server-2008

如果我有一个带有位标志列的sql server数据库表,并且我希望聚合所有行的逻辑OR,或者基于谓词的某些行,我该如何实现这一点。

例如,订单明细表有一个标记字段,其中site1 = 1,site2 = 2.

如果订单有两个包含site1和site 2的订单明细记录,那么我希望select的结果值为3。

这样的逻辑可能看起来像这样,但逻辑OR(或存在)没有聚合函数。

select ORDERNUM, SUM(LOGICAL OR (Flag)) 
  FROM ORDER_DETAIL 
 GROUP BY ORDERNUM

一些例子:

site2
site2
site1
would equal 3

site2
site2
would equal 2

site1
would equal 1

1 个答案:

答案 0 :(得分:1)

使用Distinct Sum

select ORDERNUM, SUM(distinct LOGICAL) 
  FROM ORDER_DETAIL 
 GROUP BY ORDERNUM