【发布时间】:2012-05-23 10:20:18
【问题描述】:
我正在创建 Crystal 报表,但卡住了。我有一张表(数字),里面有 20 个项目,3 列(项目#、每个订单的价格(PPO)、每个订单的案例(CPO)。该报告应该查看我们每个商店的所有销售订单和按项目打印出损失或获得的收入多少,如果他们订购低于或高于 CPO。我遇到的问题是有些商店没有订购 20 件商品中的一些,但我仍然需要这些将在报告中显示为收入损失。我知道这主要是通过 Numbers 表中的左连接来完成的。我现在的查询是:
SELECT x.*, z.*
FROM NUMBERS x
LEFT OUTER JOIN (
SELECT
BPCUSTOMER.BPCPYR_0 AS PayingBp,
BPCUSTOMER.BPCNUM_0 AS BpNumber,
ITMMASTER.ITMREF_0 AS ITMREF,
SUM(SINVOICED.NETPRI_0) AS NETPRI,
SUM(SINVOICED.QTY_0) AS Quantity,
MAX(SINVOICED.ITMDES1_0) AS DES,
MAX(BPADDRESS.CTY_0) AS BpCity,
MAX(BPADDRESS.SAT_0) AS BpState
FROM SINVOICED SINVOICED
INNER JOIN BPCUSTOMER ON SINVOICED.BPCINV_0 = BPCUSTOMER.BPCNUM_0
INNER JOIN ITMMASTER ON SINVOICED.ITMREF_0 = ITMMASTER.ITMREF_0
INNER JOIN BPADDRESS ON SINVOICED.BPCINV_0 = BPADDRESS.BPANUM_0
INNER JOIN BPCUSTOMER_PAY ON BPCUSTOMER.BPCINV_0 = BPCUSTOMER_PAY.BPCNUM_0
WHERE (ITMMASTER.TSICOD_2 = N'YE1')
AND (BPCUSTOMER.BPCPYR_0 > N'10110')
GROUP BY BPCUSTOMER.BPCPYR_0, BPCUSTOMER.BPCNUM_0, ITMMASTER.ITMREF_0
) z ON x.[Item #] = z.ITMREF
通过这个查询,我没有得到任何 NULL 信息。如果我将特定商店添加到 WHERE 部分,它会为我提供正确的结果,但仅限于该特定商店。我们有 300 多家商店,所以对我来说一次经营一家商店是没有意义的。我猜问题是在为所有商店运行它时,每件商品都至少订购了一次,所以它不会显示空字段。
希望这不会太令人困惑。有什么建议吗?
他们希望报告显示按支付 bp 然后按商店编号分组的每个项目。这是一个 SQL 数据库,但我从 Crystal Reports 中获取了查询,并试图对其进行操作以获得正确的结果。
但我有一个请求更改。他们现在只想查看根本没有购买的物品。我仍在尝试使用 NUMBERS 表的左外连接来执行此操作,但仍然遇到同样的问题。我现在的查询是:
SELECT "ZP_ITMMASTER"."ITMREF_0", "ZP_ITMMASTER"."ITMDES1_0", "ZP_NUMBERS"."Avg # Cases per order", "ZP_NUMBERS"."Price per order", "ZP_SDELIVERY"."BPCPYR_0", "ZP_SDELIVERY"."BPCORD_0", "ZP_NUMBERS"."Item #", "ZP_ITMMASTER"."TSICOD_2"
FROM (("master"."dbo"."ZP_NUMBERS" "ZP_NUMBERS" LEFT OUTER JOIN "master"."dbo"."ZP_SDELIVERYD" "ZP_SDELIVERYD" ON "ZP_NUMBERS"."Item #"="ZP_SDELIVERYD"."ITMREF_0") INNER JOIN "master"."dbo"."ZP_SDELIVERY" "ZP_SDELIVERY" ON (("ZP_SDELIVERYD"."SDHNUM_0"="ZP_SDELIVERY"."SDHNUM_0") AND ("ZP_SDELIVERYD"."SOHNUM_0"="ZP_SDELIVERY"."SOHNUM_0")) AND ("ZP_SDELIVERYD"."STOFCY_0"="ZP_SDELIVERY"."STOFCY_0")) INNER JOIN "master"."dbo"."ZP_ITMMASTER" "ZP_ITMMASTER" ON "ZP_SDELIVERYD"."ITMREF_0"="ZP_ITMMASTER"."ITMREF_0"
WHERE "ZP_ITMMASTER"."TSICOD_2"=N'YE1'
ORDER BY "ZP_SDELIVERY"."BPCPYR_0", "ZP_SDELIVERY"."BPCORD_0", "ZP_ITMMASTER"."ITMREF_0"
谢谢!!
【问题讨论】:
-
您在
BPCUSTOMER.BPCPYR_0和BPCUSTOMER.BPCNUM_0上分组有什么特别的原因吗?您似乎只想要ITMMASTER.ITMREF_0,因为它是唯一的连接字段,也是列表中的最后一个。 -
你的数据库是什么?不确定这是否是水晶问题。
标签: sql crystal-reports report