有一个张表:(公司客户交易表),有公司甲乙丙丁,客户甲乙丙丁,可以相互交易,现在希望得到
公司 |       客户 |   交易额
公司甲|  客户乙 | 3000
公司甲|  客户丙 |0
公司丁|  客户甲 |200
公司乙|  客户丁|100
**** ***** ****
省略现在希望得到:跟公司甲乙丙丁均发生过交易(交易额>0)的客户,如何编写这个sql语句?

解决方案 »

  1.   

    表结构为:
    公司客户交易表: gskhjyb (gs,kh,jye)
    客户表:  khb (kh)
    公司表:  gsb  (gs)
      

  2.   

    SQL> select * from gskhjyb;GS         KH                JYE
    ---------- ---------- ----------
    丁         丙               3000
    甲         丙                  0
    甲         乙               3000SQL> ed
    已写入 file afiedt.buf  1  select kh
      2  from gskhjyb
      3  where gs in ('甲','丁') and jye>0
      4  group by kh
      5* having count(distinct gs)=2
    SQL> /KH
    ----------
    丙这样查是否符合你的要求
      

  3.   

     5* having count(distinct gs)=2 请问这句话是什么意思?有什么作用?
      

  4.   

    having 是group by的条件,count求和 distinct没有重复值,就是说客户对应的公司(公司不重复)共有两个,由于只有两个公司,所以可以说这个客户和所有的公司都有关系;
      

  5.   

    有一个张表:(公司客户交易表),有公司甲乙丙丁,客户甲乙丙丁,可以相互交易,现在希望得到 
    公司 |      客户 |  交易额 
    公司甲|  客户乙 | 3000 
    公司甲|  客户丙 |0 
    公司丁|  客户甲 |200 
    公司乙|  客户丁|100 
    **** ***** **** 
    省略 现在希望得到: 跟公司甲乙丙丁均发生过交易(交易额>0)的客户,如何编写这个sql语句?
    select com,cum,number,comnum from (
    select com,cum,number,count(distinct(com)) over (partiton by cum) comnum from table)
    where comnum >=4 and number>0
      

  6.   


    count求和 distinct没有重复值可惜access数据库不支持
      

  7.   


    啊,竟然是access数据库,晕倒!呵呵,还以为是oracle数据库呢!