2014-12-03 166 views
1

我有一個報告,我需要連接兩個表,但字段之間定義不同,我不能改變表的模式,因爲它的JDEdwards。所以我有一個30個字符左對齊的字段,另一個字段右對齊12個字符。這些值將始終在12個字符以內。所以問題不在於大小的差異,而是對齊/填充。儘管我必須進行左連接。現在報告只是比較數據選擇並導致內部連接。但我需要將其更改爲左連接以停止丟失行。有什麼辦法可以做到嗎?左側的接合部右對齊左對齊場場水晶

會發生什麼事是當我創建的鏈接做數據庫專家左加入,我最終從連接表的所有空白得到的數據,由於它沒有找到,因爲填充差的任何行。

+0

您可以使用使用左側的鏈接選項加入。你嘗試過嗎? – Siva 2014-12-04 02:53:13

+0

@Siva,是的。但正如我所提到的,其中一個領域是填充左側,另一個填充右側,所以這是行不通的。 – developerwjk 2014-12-04 19:52:55

+0

您是否需要訪問此連接的許多字段?如果沒有,您可以通過SQL Expression手動創建子查詢,並繞過將表添加到報表(通過數據庫專家)。或者您可以創建一個SQL命令,並在手動創建的查詢中完成整個報告。 – Ryan 2014-12-04 21:02:21

回答

1

既然你只需要從表中的一個值將加入您可以改爲創建一個SQL表達式,以便爲您的價值,而不需要通過數據庫專家的任何表添加到報告本身。你將能夠使用任何有效的SQL,這樣你可以做任何你想做的事情,而不受Crystal的限制。

例如,假設您的報告由Table_A組成,並且外鍵爲30個字符左對齊,並且您試圖連接到Table_B以獲取某個字段,但該關鍵字是12個字符右對齊。在Oracle中一個簡單的例子是這樣的:

case when "Table_A"."ForeignKey" is null then null 
else 
(select Table_B.SomeFieldYouWant 
    from Table_B 
    where rpad(Table_B.PrimaryKey,30,'0')="Table_A"."ForeignKey" 
end 

需要注意的是在SQL表達式是很重要的,用雙引號引用的任何字段意味着它指返回到您的報告表格/場,而不是新表在子查詢中;這就是您將子查詢與您的報表數據關聯的方式。

+0

哎呀,我只是想通了,我把這個公式字段部分,而不是SQL表達式......再次嘗試.... – developerwjk 2014-12-08 22:27:27