第一个问题:
我的表如下:
我的表如下: 
bank num   biaoji
东郊 100    true
东郊 150    false
南郊 200    true
南郊 100    false
北郊 435    true
西郊 345    false我想让查询的结果为同一bank名称下true标记与false标记之差,结果如下:
bank num
东郊 -50
南郊 100
北郊 435
西郊 345请问这个查询怎么写。  
第二个问题:
我想查询好几个表中的数据总和的差,怎么写呢?
比如A表中的bank字段总合 + B表中work字段的总和 - C表中ww字段的总和。
结果只想得到一个数字,这种SQL语句有没有可能实现呢?

解决方案 »

  1.   

    1、
    select
        bank,sum(case biaoji when 'true' then num else -num end)
    from
        表
    group by
        bank
      

  2.   

    2、
    select 
        isnull((select sum(bank) from A),0)
        +
        isnull((select sum(work) from B),0)
        -
        isnull((select sum(ww) from C),0)
      

  3.   

    case biaoji when 'true' then num else -num end  这种语句在ACCESS中被支持吗?
      

  4.   

    select bank,abs(sum(iif(bank='true',num,-num))) 
    from 
        表
    group by
        bank
      

  5.   

    ACCESS不支持CASE WHEN,用IIF()SELECT BANK,SUM(IIF(biaoji,NUM,-NUM)) as FROM 表 GROUP BY BANK
      

  6.   

    2、
    select 
        (select sum(isnull(bank,0)) from A)
        +
        (select sum(isnull(work,0)) from B)
        -
        (select sum(isnull(ww,0)) from C)
      

  7.   

    用case判断后再用sum分组求和就是
      

  8.   

    1.select bank,num=sum(case when biaoji='true' then num else -num end)
    from table
    group by bank
    2.
    select 
        (select sum(isnull(bank,0)) from A)
        +
        (select sum(isnull(work,0)) from B)
        +
        (select sum(isnull(ww,0)) from C)
      

  9.   

    学习成果:
    1、SELECT BANK,SUM(IIF(biaoji,NUM,-NUM)) as FROM 表 GROUP BY BANK
    2、select 
        (select sum(isnull(bank,0)) from A)
        +
        (select sum(isnull(work,0)) from B)
        +
        (select sum(isnull(ww,0)) from C)
    主要是注意isnull的使用,ACCESS中很多的T-SQL不支持,要注意一下。
      

  10.   

    这个问题终于解决了, 最后的解决方案就是用IIF来解决的.
    关于第二个问题, select 后面没有from语句的话在access里面是行不通的, 所以我改成了
    select distinct((select * from A)+(select * from B)) from A,B group byaceess和sql server 还是有点区别的