簡體   English   中英

Crystal Reports查詢-無法獲得正確的結果

[英]Crystal Reports Query - not getting correct results

我正在創建Crystal報表,但遇到了困難。 我有一張表格(數字),其中有20個項目,三列(項目編號,每單價格(PPO),每單案例數(CPO)。該報告應該查看我們每個商店的所有銷售訂單,如果他們是根據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多家商店,所以一次只經營一家商店對我來說沒有任何意義。 我猜的問題是,在所有商店中運行該商品時,每個商品都已至少訂購了一次,因此它不顯示空字段。

希望這不會太令人困惑。 有什么建議么?


他們希望報告顯示按付款基數然后按商店編號分組的每個項目。 這是一個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"

謝謝!!

我同意@noa,我認為這不是Crystal問題,更可能是SQL查詢問題。 就是說,我懷疑如果300個商店中的一個至少購買了每種產品,那么您可能會對一次在所有商店中運行該聲明有所了解。

如果使用數字表和“商店”表之間的交叉聯接在數字和商店之間創建笛卡爾積,該怎么辦。 即,300個商店中每個商店的每個商品編號的記錄。 通常我不推薦這種方法,但是由於我們談論的是相對較少的實體,因此可以達到目的。

獲取交叉聯接的結果,然后對您包含在問題中的子查詢執行聯接,僅這次不僅聯接項#,還聯接商店ID。 通過加入商店ID,您可以隔離每個商店出售的產品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM