2012-03-05 49 views
0

我正在使用Crystal Reports v10。我現在的結果集看起來像這樣(有44行,這是一個例子):如何使用LIKE GROUP和AVG行

item code  item desc   cost 
21010DF  DOUG FIR 2x10-10 300.00 
21012DF  DOUG FIR 2x10-12 310.50 
21014DF  DOUG FIR 2x10-14 313.25 
21016DF  DOUG FIR 2x10-16 316.10 
21018DF  DOUG FIR 2x10-18 319.56 
2410DF  DOUG FIR 2x4-10 271.69 
2412DF  DOUG FIR 2x4-12 273.12 
2414DF  DOUG FIR 2x4-14 275.98 
12CDX   PLYWOOD 1/2 CDX  15.00 
34TGADV  PLYWOOD T&G ADV  24.00 
58CDX   PLYWOOD 5/8 CDX  18.00 

我一直在問到組這些項目,併爲每個組的平均成本。分組規則由組織定義(它們是隨機的 - 一些是邏輯組,而有些行則不在邏輯組中)。

結果集需要這個樣子:

item desc     avg cost 
DOUG FIR 2x10 (10-14)  300.00 
DOUG FIR 2x10-16   316.10 
DOUG FIR 2x10-18   319.56 
DOUG FIR 2x4 (10-14)  271.69 
PLYWOOD CDX    16.50  
PLYWOOD T&G ADV   24.00 

到目前爲止,這是我得到了什麼,但它似乎並沒有被即將接近我所需要的:

SELECT item_cd, item.item_desc, AVG(inv.cst) as avg cost 
FROM item, inv 
WHERE item.item_id = inv.item_id 
AND item.item_cd LIKE '210%DF' 
GROUP BY item.item_cd, item.item_desc 

任何人都可以提供如何實現這一目標的建議?

+0

如果您的用戶需要的組具有特定的規則,爲什麼不用「groupnumber」創建一個字段,更新這些規則並根據這些字段進行分組? – jclozano 2012-03-05 17:20:57

+0

這是一個**真的**糟糕的方式來存儲您的數據。嘗試重構數據庫,例如,你可以使用'wood_type'(帶有「DOUG FIR」,「PLYWOOD」等等)和'dimensions'(值爲2x10,2x10等) ,然後連字符後面的第三個值(我不是真的知道代表什麼,但是爲它創建一個列)。 – 2012-03-05 17:21:55

+0

Jack Maney - 如果我能夠修改db,這將是一個很好的建議,但不幸的是,我不能。還有其他建議嗎? – Piet 2012-03-05 17:24:42

回答

2

那麼,如果沒有邏輯的分組,那麼它必須是手動的,對不起。在你的情況下,對於特定的結果集,你可以做到以下幾點:

SELECT CASE WHEN item_cd IN ('21010DF','21012DF','21014DF') THEN 'DOUG FIR 2x10 (10-14)' 
     WHEN item_cd IN ('2410DF','2412DF','2414DF') THEN 'DOUG FIR 2x4 (10-14)' 
     WHEN item_cd IN ('12CDX','58CDX') THEN 'PLYWOOD CDX' ELSE item.item_desc END item_desc, 
     AVG(inv.cst) as avg cost 
FROM item 
LEFT JOIN inv 
ON item.item_id = inv.item_id 
WHERE item.item_cd LIKE '210%DF' 
GROUP BY CASE WHEN item_cd IN ('21010DF','21012DF','21014DF') THEN 'DOUG FIR 2x10 (10-14)' 
     WHEN item_cd IN ('2410DF','2412DF','2414DF') THEN 'DOUG FIR 2x4 (10-14)' 
     WHEN item_cd IN ('12CDX','58CDX') THEN 'PLYWOOD CDX' ELSE item.item_desc END 

但是,你應該做的@jclozano說,在評論,有需要在列標記進行分組的項目,他們屬於該特定組。

+0

Lamak ...我會給這個鏡頭。但是,對於我之前關於@jclozano評論的評論,「讓這些項目需要在列上分組標記它們屬於該特定組」。 – Piet 2012-03-05 17:46:10

+0

@Piet:Lamak和jclozano可能意味着什麼,你需要一個'Categories'(或者,如果你喜歡的話,'ReportingCategories')表將包含所有組描述和你的'Items'表)會引用該類別表。在運行報告之前,應該對這些項目進行分類。這樣您就可以根據各自的類別對項目進行分組,並在查詢中使用類別名稱作爲描述。當然,我們對整個設計知之甚少,是否有可能將此分類過程與報告區分開來。 – 2012-03-06 08:56:11