以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 多表查询 (http://foxtable.com/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数据库发上来测试 |