2011-09-15 47 views
0

我在兩個表中有數據(請參閱下面的示例) - 如何創建一個Crystal報表(更多的是「記分卡」),只顯示sum(table1.column1)和sum(table2.column1)其他詳情?當我嘗試時,其中一個和值變得太大,表明它已被包含在計算中的某個內部循環中。如何在單個水晶報告中得到兩個不帶聯合鍵的獨立表格的總和?

表1:
column1的:整數
列2:VARCHAR(100)
...

表2:
column1的:整數
列2:VARCHAR(50)
...

注 - 有沒有聯合鍵,唯一的關係表之間的關係是它們與同一個業務領域有關。

+0

澄清 - 這些表格實際上是單獨的SQL查詢,如果可能的話,我寧願將它們保持原樣,而不將它們拼湊在一個大的查詢中。 – telcopro

+0

這些結果表中是否有唯一的ID? – paulmelnikow

回答

0
  1. 爲Table1.uid添加分組等級。創建一個運行總計Table1Sum,總計Table1.Column1,對組Table1.uid的更改,從不重置。在Table1.Column1上創建一個運行總計Table2Sum,對每個記錄進行求和,對組Table1.uid的更改進行重置。在報告頁腳中打印兩個運行總計。
  2. 將您的查詢放在單獨的子報表中。 (這是我可能做的。)

第一個顯然需要(1)表1中的唯一鍵和(2)打印頁腳中的值。如果這些限制不起作用,那麼兩個子報表仍然可以工作。

+0

謝謝,我認爲這跟我一樣接近。 – telcopro

+0

你最終使用子報表還是有趣的跑步總數? – paulmelnikow

+0

我做了大部分的實際計算和sql中的連接,並將所有想要的值作爲列返回,然後創建子報表以深入到每個sql-「部分」(主要用於驗證)。 – telcopro

0
select t1.cnt, t2.cnt 
from (select count(*) cnt from table1 where...) t1 
, (select count(*) cnt from table2 where...) t2 
+0

那麼 - 從本質上講,使它成爲一個單一的查詢?這是唯一的方法嗎? – telcopro

0

如果你想避免子查詢方法,我能想到的唯一真正的路線是使用子報告。

2種方式我能想到的:

  1. 將在其自己的子報告中的每個查詢,並將其鏈接到主報表。
  2. 在您的主要報告中放入一個查詢,並在鏈接的子報告中放入另一個查詢。

我回答說,它幾乎肯定會比簡單地使用一個查詢慢(比如在Randy的回答中),因爲Crystal Reports不如數據庫引擎高效。這也可能比維護更困難。基本上,雖然你當然可以這樣做,我不知道我

0

您可以使用兩個SQL表達式字段。每個字段都需要返回一個標量值。您也可以將每個查詢與主報表的查詢關聯(鏈接)。