表a  列:ID  cardNo  CustomerName
表B  列:cardNo  UnitCost  FinalPrice  PartNo  PartDescription  Quantity
        (Quantity is null代表是工时,否则代表材料)
说明:并不是所有的客户都使用工时和材料,比如客户先预约登记一下还没有为他服务,所以没有使用材料和工时.
以下所有列出的信息均为a表为基准
1)列出客户名(CustomerName)、cardNo(卡号)以及每个客户总共使用的材料和工时的总和SQL语句。
2)列出客户名(CustomerName)、cardNo(卡号)以及每个客户总共使用的材料的总和、每个客户总共使用的工时的总和、每个客户总共使用材料和工时的总和SQL语句

解决方案 »

  1.   

    (Quantity is null代表是工时,否则代表材料)
    这句话意思不是很懂,是不是表示如果Quantity是空的时候就表示为工时,但如果为空,那么工时不就也是空?
      

  2.   


    select A.CustomerName,A.cardNo, M.gongshi,N.cailiao from A left outer join (
    select cardNo,count(*) as gongshi from B where Quantity is null group by cardNo) M on A.cardNo = M.cardNo
    left outer jion (
    select cardNo,count(*) as gongshi from B where Quantity is not null group by cardNo) N on A.cardNo = N.cardNo
      

  3.   

    select A.CustomerName,A.cardNo, M.gongshi,N.cailiao from A left outer join (
    select cardNo,count(*) as gongshi from B where Quantity is null group by cardNo) M on A.cardNo = M.cardNo
    left outer jion (
    select cardNo,count(*) as cailiao from B where Quantity is not null group by cardNo) N on A.cardNo = N.cardNo
      

  4.   

    2)列出客户名(CustomerName)、cardNo(卡号)以及每个客户总共使用的材料的总和、每个客户总共使用的工时的总和、每个客户总共使用材料和工时的总和SQL语句