DBF FoxPro 缺少子句组

我在 C# 中有这个查询,我尝试添加group by所有非聚合值,但它不起作用。

我有3张桌子:

  1. 我有的第一个表assemblynopart_norout_no(unique) wo_no, 等...

  2. 在第二个我有wo_no(与表 1 相同)和job_no,这是 1 和 3 之间的“链接”表

  3. 第三个表job_no(与第二个表相同)与order_val

必须使用将链接的第二个表提取第三个表rout_no中的第一个表中的给定,并且...... 我希望更清楚。max(order_val)wo_nojob_no

错误:

附加信息:SQL:GROUP BY 子句丢失或无效。

    sql = string.Format(@" SELECT t1.assemblyno, t1.level, t1.wo_no, t1.rout_no, t1.due_date, t1.printed, t1.rev_no, t2.lot, t2.po, t2.qty_due, t3.comment, t3.jobno, MAX(t3.order_val), t3.part_no,t3.po,t3.price, t3.qty_order, t3.quote_no, t3.rev_no 

    FROM ('{0}') t1 

    LEFT JOIN ('{1}') t2 

    on t1.wo_no = 2.wo_no 

    LEFT JOIN ('{2}') t3 

    on t2.jobno = t3.jobno 

    GROUP BY  t1.assemblyno, t1.level, t1.wo_no, t1.rout_no, t1.due_date, t1.printed, t1.rev_no, t2.lot, t2.po, t2.qty_due, t3.comment, t3.jobno,t3.part_no,t3.po,t3.price, t3.qty_order, t3.quote_no, t3.rev_no 

WHERE t1.rout_no=" + "\'" + rNum + "\'" + ";", databaseTable_WOROUTH, databaseTable_WOJOBS, databaseTable_SOMAST);



九州编程
浏览 132回答 2
2回答

杨__羊羊

看起来你不会分享你的结构和更多信息。仅基于我们所拥有的,可能这就是您要寻找的:    sql = string.Format(@" SELECT         t1.assemblyno, t1.level, t1.wo_no, t1.rout_no,         t1.due_date, t1.printed, t1.rev_no, t2.lot, t2.po, t2.qty_due,         t3.comment, t3.jobno, MAX(t3.order_val), t3.part_no,t3.po,t3.price, t3.qty_order,        t3.quote_no, t3.rev_no         FROM ('{0}') t1         LEFT JOIN ('{1}') t2  on t1.wo_no = 2.wo_no         LEFT JOIN (    select * from ('{2}') tmp1    inner join      (select jobNo, max(order_val) as order_val from ('{2}') group by jobNo) tmp2    on tmp1.JobNo = tmp2.JobNo and tmp1.Order_Val=tmp2.Order_val        ) t3         on t2.jobno = t3.jobno     WHERE t1.rout_no=?", databaseTable_WOROUTH, databaseTable_WOJOBS, databaseTable_SOMAST);//cmd.Parameters.Add("@rnum", OleDbType.Char).Value = rnum;//...// 感谢 BASOZ 的想法和帮助var sql = string.Format(@"select top 1     t1.assemblyno, t1.level, t1.wo_no, t1.rout_no, t1.due_date, t1.printed, t1.rev_no, t2.lot, t2.po, t2.qty_due,     t3.comment, t3.jobno, t3.order_val, t3.part_no,t3.po,t3.price, t3.qty_order,t3.quote_no, t3.rev_no from {2} t3    inner join {1} t2 on t3.jobno = t2.jobno    inner join {0} t1 on t1.wo_no = t2.wo_no     where t1.rout_no=?        and t3.order_val in (        SELECT max(tt3.order_val)                             FROM {0} tt1                             left join {1} tt2                                 on tt1.wo_no = tt2.wo_no                            left join {2} tt3                                 on tt2.jobno = tt3.jobno                            where tt1.rout_no = ?                            group by tt1.rout_no        )        {3} {4}        order by t3.jobno desc ", "t1", "t2", "t3", startCheck, endCheck);

手掌心

这适用于所有 db 格式,而不仅仅是 foxpro - 你要求 t3.order_val 的最大值,但你没有告诉它如何选择最大的组。所以如果你有一个人名、性别、年龄的数据库你可以找出每个性别的最大年龄select gender, Max(age) from mytable group by gender。没有 group by 它不知道给你什么值的最大值?通常 group by 是你没有做那种计算的所有值
打开App,查看更多内容
随时随地看视频慕课网APP