Aggregate bitwise-OR in a subquery

后端 未结 10 2036
醉酒成梦
醉酒成梦 2020-11-30 08:46

Given the following table:

CREATE TABLE BitValues ( n int )

Is it possible to compute the bitwise-OR of n for all rows with

10条回答
  •  北荒
    北荒 (楼主)
    2020-11-30 09:16

    WITH    Bits
              AS ( SELECT   1 AS BitMask
                   UNION ALL
                   SELECT   2
                   UNION ALL
                   SELECT   4
                   UNION ALL
                   SELECT   8
                   UNION ALL
                   SELECT   16
                 )
        SELECT  SUM(DISTINCT BitMask)
        FROM    ( SELECT    1 AS n
                  UNION ALL
                  SELECT    2
                  UNION ALL
                  SELECT    3
                  UNION ALL
                  SELECT    4
                  UNION ALL
                  SELECT    5
                  UNION ALL
                  SELECT    6
                ) AS t
                JOIN Bits ON t.n & Bits.BitMask > 0
    

提交回复
热议问题