SQL笔记---多表左联
这是实际场景当中的一个例子,拿出来分析总结思路。
-- 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笔记---多表左联的更多相关文章
- SQL SERVER 数据库表同步复制 笔记
SQL SERVER 数据库表同步复制 笔记 同步复制可运行在不同版本的SQL Server服务之间 环境模拟需要两台数据库192.168.1.1(发布),192.168.1.10(订阅) 1.在发布 ...
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
sql server 关于表中只增标识问题 由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- SQL 笔记 By 华仔
-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...
- Oracle笔记 多表查询
Oracle笔记 多表查询 本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...
- 你真的会玩SQL吗?表表达式,排名函数
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- sql 删除所有表
sql删除所有表语句: use 数据库名(是要删除表的所在的那个数据库的名称) GO declare @sql varchar(8000) while (select count(*) from sy ...
- **SQL某一表中重复某一字段重复记录查询与处理
sql某一表中重复某一字段重复记录查询与处理 1.查询出重复记录 select 重复记录字段 form 数据表 group by houseno having count(重复记录字段)> ...
- sql 笔记(mysql)
Windows 安装mysql(zip包) 1,zip包解压到要安装目录 2,配置环境变量,Path后加mysql路径\bin 3,修改配置文件,mysql目录下my-default.ini base ...
随机推荐
- VS文件发布不了,这样设置可以解决
在VS里面新增一些文件的时候,往往发布的时候会发布不了,比如:(*.rdlc,*.p12).在项目里面,这些项目已经包含在项目里了,但是发布后,会发现这些文件并没有被发布出来 解决办法:邮件选择文件, ...
- 亲, 我们来再重申一遍"=="和"equals的区别
今天经历的一个事情太丢脸了, 一个学弟向我请教问题, 是这样的: 一个字符串里面含有空格, 不允许使用.trim()和replace方法, 只用if和for将空格去掉, 题目很简单, 一开始我是这样写 ...
- springmvc DispatchServlet初始化九大加载策略(一)
由于篇幅较长,因此分三篇进行讲解: springmvc DispatchServlet初始化九大加载策略(一) springmvc DispatchServlet初始化九大加载策略(二) spring ...
- Mybatis中的N+1问题与延迟加载
0.什么是N+1问题? 在查询中一下子取出所有属性,就会使数据库多执行几条毫无意义的SQL .实际中不需要把所有信息都加载进来,因为有些信息并不常用,加载它们会多执行几条毫无用处的 SQL,导致数据库 ...
- in文件注意事项及详细解释
lammps做分子动力学模拟时,需要一个输入文件(input script),也就是in文件,以及关于体系的原子坐标之类的信息文件(data file)和势文件(potential file).lam ...
- (动态规划)有 n 个学生站成一排,每个学生有一个能力值,从这 n 个学生中按照顺序选取kk 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 kk 个学生的能力值的乘积最大,返回最大的乘积
第2关:最强战队 挑战任务 绿盟和各大名企合作,举办编程能力大赛,需要选拔一支参赛队伍.队伍成员全部来自“绿盟杯”中表现优秀的同学,每个同学都根据在比赛中的表现被赋予了一个能力值.现在被召集的N个同学 ...
- cdoj841-休生伤杜景死惊开 (逆序数变形)【线段树 树状数组】
http://acm.uestc.edu.cn/#/problem/show/841 休生伤杜景死惊开 Time Limit: 3000/1000MS (Java/Others) Memory ...
- 8-导弹拦截一(n^2 and nlogn)
/*某国为了防御敌国的导弹袭击,研发出一套导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发拦截炮弹能够到达任意的高度,但是以后每一发拦截炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的多 ...
- discuz模板介绍
1.discuz目录下template为模板目录 模板套系 discuz每套模板,支持不同的风格,而多个风格组成一套套系. 推荐使用复制的方法创建新的风格 (*默认的公共页面静态资源,存储在discu ...
- 【深度好文】多线程之WaitHandle-->派生-》Semaphore信号量构造
Semaphore 继承自WaitHandle. 信号量说简单点就是为了线程同步,或者说是为了限制线程能运行的数量. //创建一个限制资源类 //资源数为5,开放资源数为2 //主线程自动占有3个资源 ...