【发布时间】:2015-11-11 09:59:08
【问题描述】:
我有 2 组表,每组都包含一个表头和明细表。其中一组是包含最终记录列表的主集,另一组是补充集。每个明细表都有一个数量字段。我需要加入两组表并汇总两组表的数量字段,但如果补充集中的记录较少,我需要显示一个空值并排除记录本身。 这是只显示匹配记录的数据的查询,我需要在补充集的数量字段中显示主集中所有具有空值的记录。
SELECT LTOH.txn,
LTOH.txnno,
LTOI.itemcode,
SUM (LTOI.qty) AS SumOfqty,
SUM (BTI.qty) AS SumOfqty1
FROM ( BTH
INNER JOIN
BTI
ON BTH.hsysid = BTI.ltohsysid)
INNER JOIN
( LTOH
INNER JOIN
LTOI
ON LTOH.hsysid = LTOI.ltohsysid)
ON (BTI.itemcode = LTOI.itemcode)
AND (BTH.txnno = LTOH.txnno)
AND (BTH.txn = LTOH.txn)
GROUP BY LTOH.txn, LTOH.txnno, LTOI.itemcode
HAVING ( ( (LTOH.txn) = "ABC") AND ( (LTOH.txnno) = "1"));
【问题讨论】:
-
哪个表是“主集”?两个代码帖子,我没有看到任何外部连接。你能发布实际引发错误的代码吗?
-
LTOH & LTOI 为主集,记录完整,BTH & BTI 为补充集,记录完整或更少。
-
我很难理解,我需要尽快上床睡觉,但是……发布的查询真的有效吗?通常你需要给这些子表起别名,即你需要像
ON BTH.hsysid = BTI.ltohsysid) T1这样的东西,它将那个部分别名为T1然后这个ON BTH.hsysid = BTI.ltohsysid)会变成这样:ON T1.hsysid = T2.ltohsysid)` -
“更少的记录”是指
COUNT(*)还是SUM(QTY)? -
头表之间是否存在 0 或 1 对 1 的关系?即没有重复计算