zoukankan      html  css  js  c++  java
  • 2021-03-17_SQL练习

    如下一张合同表T0317

    现在想获得每个直接合同的价格以及对应的补充合同的价格,得到的结果大致如下:该如何写这个SQL?

    测试数据:

    CREATE TABLE T0317 
    (
    ID INT,
    Type VARCHAR(20),
    MasterID INT,
    Amount INT
    )
    
    INSERT INTO T0317 VALUES (1,'直接合同',NULL,5000);
    INSERT INTO T0317 VALUES (2,'补充合同',1,1000);
    INSERT INTO T0317 VALUES (3,'补充合同',1,500);
    INSERT INTO T0317 VALUES (4,'直接合同',NULL,6000);
    INSERT INTO T0317 VALUES (5,'直接合同',NULL,4000);
    INSERT INTO T0317 VALUES (6,'补充合同',5,1000);
    View Code

    参考答案:

    思路:
    使用连表查询,将补充合同的MasterID和直接合同的ID对应,再将type=直接合同的条件过滤数据,最后根据ID进行分组,输出ID,Type,补充合同的金额使用IFNULL(SUM(Amount),0)2个函数进行计算.
    
    SELECT A.ID,A.Type,A.Amount,IFNULL(SUM(B.Amount),0) FROM T0317 A LEFT JOIN T0317 B ON A.ID=B.MasterID WHERE A.Type='直接合同' GROUP BY A.ID;
    View Code
  • 相关阅读:
    综合日语第一册第十课
    综合日语第一册第九课
    荒木毬菜 小情歌日文版
    c# 匿名函数
    字典取KEY,占位符,延迟刷新
    flash GC
    自定义滤镜 ColorMatrixFilter
    sql join
    NSLog Release
    Windows 运行中的命令
  • 原文地址:https://www.cnblogs.com/wangyadong/p/14550135.html
Copyright © 2011-2022 走看看