我的表1 中有 a、b、c、d……k   12个字段,现在想给他们每个字段设计一个标记,比如atag,btag,……ktag,当标记为2时,就将对应的字段相加,为1时不相加。
我的思路是:SELECT a + b+c+……+K AS SUM
FROM 表1
WHERE a IN
          ((SELECT a
          FROM 表1
          WHERE aTag = 2)
WHERE b IN
          (SELECT b
         FROM 表1
         WHERE btag = 2))……WHERE K IN
          (SELECT K
         FROM 表1
         WHERE Ktag = 2))但是不行,无法查询到我想要的结果,希望大家帮帮忙!语句如何实现,或者是我改改思路! 谢谢大家!

解决方案 »

  1.   

    你的多个where条件 应该用 and 连接
    SELECT a + b+c+……+K AS SUM
    FROM 表1
    WHERE a IN
              ((SELECT a
              FROM 表1
              WHERE aTag = 2)
    and b IN
              (SELECT b
             FROM 表1
             WHERE btag = 2))……and K IN
              (SELECT K
             FROM 表1
             WHERE Ktag = 2))
      

  2.   

    不行,提示出错在 ‘and’ 附近
      

  3.   

    这个你可以考虑使用case when来做
    select a=(case x when 1 then a else 0 end),b=(case x when 1 then 0 else b end),a+b, from tables
      

  4.   

    上面给出的还是不太好,
    用这个吧类似如下
    select (case x when 3 then a+b+c when 2 then a+d else b+d end) as x from tablex
      

  5.   

    我的设计思路是将12个月份的数据分别以字段来存储,这样就能够实现一些我需要的月份之间的运算。同时想给每个字段打上标记,这样来进行判断数据的状态。不知道说明白了没有!我先考虑一下 用case看看