这是实际场景当中的一个例子,拿出来分析总结思路。

-- SQL 查询 --
SELECT  orderQuery.Rk_SkuCode ,
        orderQuery.SkuName,
        SUM(ISNULL(orderQuery.OrderTotal, 0))
        - SUM(ISNULL(removeQuery.RemoveTotal, 0))
        - SUM(ISNULL(pickQuery.PickTotal, 0))
        - SUM(ISNULL(tempPickQuery.TempPickTotal, 0)) AS RealOrders ,
        SUM(ISNULL(orderQuery.OrderTotal, 0)) AS Orders ,
        SUM(ISNULL(removeQuery.RemoveTotal, 0)) AS Removes ,
        SUM(ISNULL(pickQuery.PickTotal, 0)) AS Picks ,
        SUM(ISNULL(stockQuery.StockTotal, 0)) AS Stocks ,
        SUM(ISNULL(tempPickQuery.TempPickTotal, 0)) AS TempPicks
FROM    ( SELECT    Rk_SkuCode , do.Rk_SkuName AS SkuName,
                    SUM(do.UnitQty) AS OrderTotal
          FROM      dbo.SALE_Bill_Sale_Order o ,
                    dbo.SALE_Bill_Sale_Order_Detail do
          WHERE     o.Fk_ATS_Wfs_NodeId != 100100170
                    AND o.Fk_BillTypeId = 100100010
                    AND o.Pk_OrderId = do.Fk_OrderId
                    AND o.Fk_WarehouseId = 140416154556733
          GROUP BY  Rk_SkuCode,do.Rk_SkuName
        ) orderQuery
        LEFT OUTER JOIN ( SELECT    Rk_SkuCode ,
                                    SUM(rd.Quantity) AS RemoveTotal
                          FROM      dbo.WMS_Bill_Remove r ,
                                    dbo.WMS_Bill_Remove_Detail rd
                          WHERE     r.Pk_RemoveId = rd.Fk_RemoveId
                                    AND r.Fk_WarehouseId = 140416154556733
                                    AND r.Fk_BillTypeId = 100100110
                                    AND r.Fk_ATS_Wfs_NodeId = 100300140
                          GROUP BY  Rk_SkuCode
                        ) removeQuery ON orderQuery.Rk_SkuCode = removeQuery.Rk_SkuCode
        LEFT OUTER JOIN ( SELECT    Rk_SkuCode ,
                                    SUM(s.Quantity) AS PickTotal
                          FROM      dbo.WMS_Stock s ,
                                    dbo.WMS_Info_PartArea p
                          WHERE     p.Pk_PartAreaId = s.Fk_PartAreaId
                                    AND s.Fk_WarehouseId = 140416154556733
                                    AND p.Ek_Type = 100100120
                          GROUP BY  Rk_SkuCode
                        ) pickQuery ON orderQuery.Rk_SkuCode = pickQuery.Rk_SkuCode
        LEFT OUTER JOIN ( SELECT    Rk_SkuCode ,
                                    SUM(s.Quantity) AS StockTotal
                          FROM      dbo.WMS_Stock s ,
                                    dbo.WMS_Info_PartArea p
                          WHERE     p.Pk_PartAreaId = s.Fk_PartAreaId
                                    AND s.Fk_WarehouseId = 140416154556733
                                    AND p.Ek_Type = 100100150
                          GROUP BY  Rk_SkuCode
                        ) stockQuery ON orderQuery.Rk_SkuCode = stockQuery.Rk_SkuCode
        LEFT OUTER JOIN ( SELECT    Rk_SkuCode ,
                                    SUM(s.Quantity) AS TempPickTotal
                          FROM      dbo.WMS_Stock s
                          WHERE     s.Fk_WarehouseId = 140416154556733
                                    AND s.Fk_LocationId = 140612114677165
                          GROUP BY  Rk_SkuCode
                        ) tempPickQuery ON orderQuery.Rk_SkuCode = tempPickQuery.Rk_SkuCode
GROUP BY orderQuery.Rk_SkuCode,orderQuery.SkuName
HAVING  ( SUM(ISNULL(orderQuery.OrderTotal, 0))
          - SUM(ISNULL(removeQuery.RemoveTotal, 0))
          - SUM(ISNULL(pickQuery.PickTotal, 0))
          - SUM(ISNULL(tempPickQuery.TempPickTotal, 0)) ) > 0

SQL笔记---多表左联的更多相关文章

  1. SQL SERVER 数据库表同步复制 笔记

    SQL SERVER 数据库表同步复制 笔记 同步复制可运行在不同版本的SQL Server服务之间 环境模拟需要两台数据库192.168.1.1(发布),192.168.1.10(订阅) 1.在发布 ...

  2. sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)

    sql server 关于表中只增标识问题   由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...

  3. CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  4. SQL 笔记 By 华仔

    -------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...

  5. Oracle笔记 多表查询

    Oracle笔记  多表查询   本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...

  6. 你真的会玩SQL吗?表表达式,排名函数

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  7. sql 删除所有表

    sql删除所有表语句: use 数据库名(是要删除表的所在的那个数据库的名称) GO declare @sql varchar(8000) while (select count(*) from sy ...

  8. **SQL某一表中重复某一字段重复记录查询与处理

    sql某一表中重复某一字段重复记录查询与处理   1.查询出重复记录  select 重复记录字段 form  数据表 group by houseno having count(重复记录字段)> ...

  9. sql 笔记(mysql)

    Windows 安装mysql(zip包) 1,zip包解压到要安装目录 2,配置环境变量,Path后加mysql路径\bin 3,修改配置文件,mysql目录下my-default.ini base ...

随机推荐

  1. 在c#下用 WCF编写restful

    1.添加WCF服务库 2.在global里面注册路由 RouteTable.Routes.Add(new ServiceRoute("api", new WebServiceHos ...

  2. Android中注解的使用

    如果你是一名安卓开发者,你也一定听过大名鼎鼎的网络请求框架Retrofit.它将网络请求的方式以注解的形式展现,极大的提高了代码的可读性,同时网络请求集中写在一个interface中提高了代码的可维护 ...

  3. ie6浏览器的安装

    试过各种方法都不行,最后用ie8卸载工具,不仅卸载了ie8还自动安装了ie6,非常棒!!!我的空间有那款卸载工具.

  4. scrollLeft滚动(用animate替代)

    原: let checkedLeft1 = $('#dateBox').find('.checked').position().left let checkedLeft2 = $('#dateBox' ...

  5. dfs小练 【dfs】

    1.前n个自然数的所有排列: #include <iostream> #include <cstdio> #include <cstring> using name ...

  6. 安装tftp服务器进行文件传输

    1. 安装: sudo apt-get install tftp-hpa tftpd-hpa ps: tftpd是服务器,tftp是客户端,客户端能发送和获取,服务器不能动. 2. 配置文件: sud ...

  7. SQL2000清除SQL日志

    1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收 ...

  8. git设置别名alias

    每次用git拉去版本库都很烦,特别是要从非origin源,非master分支, 例如 git pull gitlab mybranch ,这样很蛋疼. 1.写个sh去处理 2.可以通过git的别名设置 ...

  9. linux用户和组

    1.用户隶属于用户组的. 2.用户与用户组配置文件 1)用户组配置文件 /etc/group 第一列:用户组的组名 第二列:组密码(真正的密码存储在了gshadow中) 第三列:用户组组ID,用户组唯 ...

  10. 64bits access

    http://www.codicode.com/art/64_bit_version_of_microsoft_jet.aspx