如果我有一个带有位标志列的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
答案 0 :(得分:1)
使用Distinct Sum
select ORDERNUM, SUM(distinct LOGICAL)
FROM ORDER_DETAIL
GROUP BY ORDERNUM