以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 两个表union后再与第三表left join要怎么写 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92464) |
-- 作者:happyft -- 发布时间:2016/11/4 0:09:00 -- 两个表union后再与第三表left join要怎么写 下面的语句是先将两个表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处有语法错误”,为什么?正确的要怎么写,前面红色部份单独运行都是正确的 谢谢! |
-- 作者:有点蓝 -- 发布时间:2016/11/4 8:44:00 -- select c.产品编码,c.工序号,c.仓库,c.盘点日期,c.实盘数量,d.本期入库,d.本期出库,d.本期变动
from
(SeLECT b.产品编码,b.工序号,a.仓库,盘点日期,(实盘数量+实盘不良数量+实盘报废数量) As 实盘数量 FROM 盘点表 a inner join 盘点明细 b on a.盘点编号 = b.盘点编号
Union
SeLECT 产品编码,工序号,仓库,\'\' AS 盘点日期,\'\' as 实盘数量 FROM 库存表
WHERE NOT exists (SeLECT DISTINCT 产品编码 FROM 盘点表 a inner join 盘点明细 b on a.盘点编号 = b.盘点编号)) as c LEFT JOIN (select 产品编码,工序号,仓库,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 c.产品编码 = d.产品编码 and c.工序号 = d.工序号 and c.仓库 = d.仓库
|
-- 作者:HappyFt -- 发布时间: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 引入子查询时,在选择列表中只能指定一个表达式。 这种方式要怎么写才正确? |
-- 作者:有点蓝 -- 发布时间:2016/11/4 13:51:00 -- S eLECT 产品编码,工序号,仓库,\'\' AS 盘点日期,0 as 实盘数量 FROM 库存表 WHERE (isnull(产品编码,\'\')+isnull(工序号,\'\')+isnull(仓库,\'\')) NOT in (S eLECT DISTINCT isnull(产品编码,\'\')+isnull(工序号,\'\')+isnull(仓库,\'\') FROM 盘点表 a inner join 盘点明细 b on a.盘点编号 = b.盘点编号)
|