Foxtable(狐表)用户栏目专家坐堂 → 两个表union后再与第三表left join要怎么写


  共有2004人关注过本帖树形打印复制链接

主题:两个表union后再与第三表left join要怎么写

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1926 积分:17403 威望:0 精华:0 注册:2014/7/29 19:09:00
两个表union后再与第三表left join要怎么写  发帖心情 Post By:2016/11/4 0:09:00 [显示全部帖子]

下面的语句是先将两个表union后再left join第三个表:
s elect b.产品编码,b.工序号,a.仓库,盘点日期,(实盘数量+实盘不良数量+实盘报废数量) As 实盘数量,本期入库,本期出库,本期变动 from 

(S ELECT b.产品编码,b.工序号,a.仓库,盘点日期 FROM 盘点表 a inner join 盘点明细 b on a.盘点编号 = b.盘点编号 '
Union 
S ELECT 产品编码,工序号,仓库,'' AS 盘点日期 FROM 库存表 
WHERE NOT exists (S ELECT DISTINCT 产品编码 FROM 盘点表 a inner join 盘点明细 b on a.盘点编号 = b.盘点编号))

LEFT JOIN
 (s elect 产品编码,工序号,仓库,isnull(sum(入库数量),0) as 本期入库,isnull(sum(出库数量),0) as 本期出库,isnull(sum(进出数量),0) as 本期变动 from Stockinout 
 where 进出类别 <> '盘点' and 品质状态 <> '未判定' And 仓库 = '电子成品仓' and 进出日期 > '2016-09-30' group by 产品编码,工序号,仓库) d

on b.产品编码 = d.产品编码 and b.工序号 = d.工序号 and a.仓库 = d.仓库

执行时总提示 “d处有语法错误”,为什么?正确的要怎么写,前面红色部份单独运行都是正确的
谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1926 积分:17403 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2016/11/4 13:05:00 [显示全部帖子]

谢谢,可以了,再问过问题如下:
S eLECT 产品编码,工序号,仓库,'' AS 盘点日期,0 as 实盘数量 FROM 库存表 
WHERE (产品编码+工序号+仓库) NOT in (S eLECT DISTINCT 产品编码,工序号,仓库 FROM 盘点表 a inner join 盘点明细 b on a.盘点编号 = b.盘点编号)

想实现用三个字段的组合值不在某个表中作为条件来筛选,上面的代码运行提示
消息 116,级别 16,状态 1,第 2 行
当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。

这种方式要怎么写才正确?




 回到顶部