以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多表查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154512)

--  作者:wgqcool
--  发布时间:2020/9/16 20:02:00
--  多表查询
情况说明:表为SQL外部数据表,订单表的合同编号为唯一值,备货单中合同编号为非唯一值,同一张订单会有多张备货单,每张备货单会有个逻辑列“是否发齐”;
需求说明:想通过多表查询,按订单表的合同编号生成查询报表,关联备货单上的“是否发齐”,因为备货单有对应多行,但是又不知道逻辑列怎么用聚合函数来运算,想着SQL里面逻辑列用0,1表示,准备用MIN(是否发齐)来运算,只要多行的备货单里面有一个未发齐(0)的行,那么整个订单就是未发齐(0)的状态。可是还是太年轻了,发现行不通,故请教老师来了;
主要代码:
cmd.CommandText = "Selec t a.[_Identify],a.合同编号,a.客户名称,a.签订日期,a.合同类型,a.合同金额,a.销售员,b.成本价,c.是否发齐 From ({订单表} a LEFT JOIN (Selec t 合同编号,SUM(成本金额) As 成本价 From {订单明细表} Group By 合同编号) b on a.合同编号 = b.合同编号) LEFT JOIN (Selec t 合同编号,MIX(是否发齐)  as 是否发齐 From {备货单} Group By 合同编号) c ON a.合同编号 = c.合同编号 where a.签订日期 >= \'2/1/2020\' ORDER BY 签订日期"





[此贴子已经被作者于2020/9/16 20:14:56编辑过]

--  作者:wgqcool
--  发布时间:2020/9/16 20:07:00
--  
论坛限制,select 中间加了空格 selec t
[此贴子已经被作者于2020/9/16 20:16:31编辑过]

--  作者:有点蓝
--  发布时间:2020/9/17 8:56:00
--  
(Selec t 合同编号,MIN(是否发齐)  as 是否发齐 From {备货单} Group
--  作者:wgqcool
--  发布时间:2020/9/18 17:02:00
--  
我打错字了,用的是MIN  还是不行。

--  作者:有点蓝
--  发布时间:2020/9/18 17:52:00
--  
把把数据导入access数据库发上来测试