2009-02-27 17 views
0

MDX'e yeni geliyorum ve aşağıdaki sorunu çözmeye çalışıyorum. Hesaplanan üyeler, alt seçimler, kapsam ifadeleri vb. Incelediler, ancak istediğimi yapamayacağım. Ben (someEntity2 içinde) iç netleştirme işlemleri gizlemek bir hesap defteri var, başka deyişleToplama ile SQL alt sorgularına MDX eşdeğeri

SELECT SUM(netMarketValue) net, 
    SUM(CASE WHEN netMarketValue > 0 THEN netMarketValue ELSE 0 END) assets, 
    SUM(CASE WHEN netMarketValue < 0 THEN netMarketValue ELSE 0 END) liabilities, 
    SUM(ABS(netMarketValue)) gross 
    someEntity1 
FROM (
SELECT SUM(marketValue) netMarketValue, someEntity1, someEntity2 
FROM <some set of tables> 
GROUP BY someEntity1, someEntity2) t 
GROUP BY someEntity1 

:

ı aşağıdaki SQL sorgusuna MDX eşdeğer ile gelip çalışıyorum diyelim Daha sonra, someEntity2 tarafından toplandıktan sonra varlıklar & yükümlülüklerini hesaplayın. Sonra büyük varlık, someEntity1 tarafından toplanan bu varlıkların & yükümlülüklerin büyük toplamını görmek istiyorum.

MDX şemasında, someEntity1 & someEntity2 için boyutlara sahip bir küpüm var ve marketValue benim tablo/önlem olabilir. Alt sorgumun ne yaptığını (net hesaplayarak) yapan bir başka DSV yaratabildiğimi ve ölçü boyutumla bir küp oluşturduğumu sanıyorum, ama daha iyi bir yol olup olmadığını merak ediyorum. Veritabanımda çok fazla yinelenen bilgi olacağından, 2 küpün (bu net hesaplamalar için bir tane diğeri ise başka kullanım durumları için daha düşük bir düzeyine geçmesi) tercih ederim. Bunlar çok büyük küpler olacak.

cevap

0

Kümelenme mantığını küpte bırakmanız gerektiğini düşünüyorum - en iyi yaptığı şey budur.

Sizin durumunuzda, bir hesap boyutu oluşturur ve sonra add Account Intelligence olur. Ancak, bu yalnızca SQL Server Enterprise sürümü (2005 ve üstü) için çalışır.

Standart sürüme sahipseniz, bu kuralın yapacağı yolu to use unary operators olur.

Bu şekilde Sql Server 2000 ve here ile yaptığımız gibi büyük bir örneğiniz var.

0

Bence istediğin şey iki küp değil, iki olgu tablosuyla bir küp (bazen bir takımyıldız şeması denir). Soru aylar önce yazıldı, bu yüzden birisi daha fazla bilgi istemediğinden daha fazla ayrıntı vermeyeceğim.