有一个表,如下:
a字段,b字段
qqq,101010
qqq,010101
www,010101
www,111000
eee,001010
如何写sql查询语句,做到分组,然后进行位或运算?b字段应该取什么数据类型?
结果要这样:
a字段,b字段
qqq,111111
www,111101
eee,001010

解决方案 »

  1.   

    可以进行位或运算。这里的B字段当然是字符型,关键是运算后的结果你要存为二进制还是十进制呢?--两个整数执行“位或”运算。
    3 | 5 
    表达式的计算结果为 7 (00000111)。0000001100000101-----------00000111--ReorderPoint 和 SafetyStockLevel 列执行“位或”运算。
    ReorderPoint | SafetyStockLevel--如果 ReorderPoint 为 10,SafetyStockLevel 为 8,则表达式的计算结果为 10 (00001010)。0000101000001000-----------00001010
    --详见联机丛书。
      

  2.   

    你的数据是string型,没法直接按位操作。写函数按位读取,比较吧
      

  3.   

    DECLARE @T TABLE(A VARCHAR(3),B VARCHAR(10))
    INSERT @T
    SELECT 'qqq','101010' UNION ALL
    SELECT 'qqq','010101' UNION ALL
    SELECT 'www','010101' UNION ALL
    SELECT 'www','111000' UNION ALL
    SELECT 'eee','001010'
    SELECT A,LTRIM(SUM(DISTINCT LEFT(B,1)*1))+
    LTRIM(SUM(DISTINCT RIGHT(LEFT(B,2),1)*1))+
    LTRIM(SUM(DISTINCT RIGHT(LEFT(B,3),1)*1))+
    LTRIM(SUM(DISTINCT RIGHT(LEFT(B,4),1)*1))+
    LTRIM(SUM(DISTINCT RIGHT(LEFT(B,5),1)*1))+
    LTRIM(SUM(DISTINCT RIGHT(B,1)*1))
    FROM @TGROUP BY A
    (所影响的行数为 5 行)A                                                                             
    ---- ------------------------------------------------------------------------ 
    eee  001010
    qqq  111111
    www  111101(所影响的行数为 3 行)
      

  4.   

    需要结合group by来做,  这样的话可能 位或函数应该是聚合函数了  请问怎么处理呢 这样?