我在使用连接/子查询组合两个查询时遇到问题。
我的第一个查询是提取销售总额(此示例仅提取一个产品):
SELECT
DAB020.ARTNR,
SUM(DAB020.RE_WERT) as "Total Euros",
COUNT(DISTINCT DAB020.ANUMMER) as "Number of Orders"
FROM "DAB020.ADT" DAB020
WHERE DAB020.RE_DATUM >= { d '2021-01-01' } AND DAB020.ARTNR = '123456'
GROUP BY DAB020.ARTNR
示例结果:
ARTNR Total VK € Auftrag Nr
123456 999999,50 60
效果很好,给一篇文章,今年的总销售额+订单号的唯一数量。
我的第二个查询(来自不同的表)显示了销售报价的数量:
Select
COUNT(DISTINCT left (DAB055.APNUMMER,6)) as "# offers"
FROM "DAB055.ADT" DAB055
WHERE (DAB055.BUCH_DATUM>={d '2021-01-01'}) // YYYY.MM.DD
AND DAB055.ARTNR = '123456'
示例结果:
ARTNR # offers
123456 120
也可以正常工作,显示文章编号,unqiue 报价编号的计数。
现在我想将报价结果附加到销售结果的末尾:
SELECT
DAB020.ARTNR,
SUM(DAB020.RE_WERT) as "Total Euro",
COUNT(DISTINCT DAB020.ANUMMER) as"Number of Orders",
left join (
Select
COUNT(DISTINCT left (DAB055.APNUMMER,6)) as "# offers"
FROM "DAB055.ADT" DAB055
WHERE (DAB055.BUCH_DATUM>={d '2021-01-01'}) // YYYY.MM.DD
) as results on DAB055.ARTNR = DAB020.ARTNR
FROM "DAB020.ADT" DAB020
WHERE DAB020.RE_DATUM >= { d '2021-01-01' } AND DAB020.ARTNR = '969226'
GROUP BY DAB020.ARTNR
预期结果:
ARTNR Total VK € Auftrag Nr # offers
123456 999999,50 60 120
但它当然不起作用。两个表之间的链接是 DAB055.ARTNR 和 DAB020.ARTNR,但我不确定如何使语法正确。
有人可以澄清我的错误吗? 谢谢!
编辑:只是一个说明 - 我在这里只使用一篇文章进行测试。对于最终查询,它将是几百个。
答案 0 :(得分:1)
您的查询仅执行单个产品,您可以将每个查询作为 from 别名执行。由于每个返回单行,它将是 1:1 并直接拉取值。我仍然分别在每个密钥 ID 中容纳最终加入。但是,如果您需要其他 ARTNR
值,或相关日期时间范围的 ALL ARTNR
,只需在 where 子句中分别从每个子查询中删除单个 ARTNR
。然后,您可以获得包含订单和欧元计数/总计的所有优惠。
SELECT
Q1.ARTNR,
Q1.TotalEuro "Total Euro",
Q1.NumberOfOrders "Number of Orders",
Q2.NumberOffers "# Offers"
from
( SELECT
DAB020.ARTNR,
SUM(DAB020.RE_WERT) as TotalEuro,
COUNT(DISTINCT DAB020.ANUMMER) as NumberofOrders,
FROM
"DAB020.ADT" DAB020
WHERE
DAB020.RE_DATUM >= { d '2021-01-01' }
AND DAB020.ARTNR = '969226'
GROUP BY
DAB020.ARTNR ) Q1
JOIN
( Select
DAB055.ARTNR,
COUNT(DISTINCT left (DAB055.APNUMMER,6)) as NumberOffers
FROM
"DAB055.ADT" DAB055
WHERE
DAB055.BUCH_DATUM >= { d '2021-01-01'}
AND DAB055.ARTNR = '969226'
GROUP BY
DAB055.ARTNR ) Q2
on Q1.ARTNR = Q2.ARTNR