2016-04-02 19 views
0

Belirli bir segmentte, yani Domestic Corp.
Benim Sorgu ben HNI için aynı sorguyu tekrarlamak zorundaBölge bilge yüzdesi

select REGION_NAME, 
      round(ratio_to_report(nvl(sum(gross_sales_amt_t),0)) over()*100) as Gr_Sales_domcorp 
from  fact_mfdex_segment A 
JOIN  dim_location B 
ON  a.branch_code = b.branch_code 
WHERE  to_date(DATE_SK,'YYYYMMDD') between '01-feb-2016' and '01-mar-2016' 
AND  week_flag='Y' 
AND  a.segments = 'Domestic Corp.' 
group by REGION_NAME; 

olduğunu PERAKENDE VB Farklı sorguları yazmak yerine, Yerel Klasman yerine, diğer segmentleri eklemek için ilk sorgumu kullanabilirim. Dava beyanını denedim ama çalışmıyor. Herhangi bir yardım

cevap

0

, seçilen sütunlara a.segments ekleyin a.segments ve REGION_NAME tarafından "AND a.segments = ..." satırı, a.segments tarafından bölme ratio_to_report ve grubunu kaldırmak. Çıkış sütun adını Gr_Sales_domcorp'tan Gr_Sales'e değiştirmek isteyebilirsiniz. Böyle bir şey:

select  REGION_NAME, a.segments, 
      round(ratio_to_report(nvl(sum(gross_sales_amt_t),0)) 
        over (partition by a.segments)*100) as Gr_Sales 
from  fact_mfdex_segment A 
JOIN  dim_location B 
ON  a.branch_code = b.branch_code 
WHERE  to_date(DATE_SK,'YYYYMMDD') between '01-feb-2016' and '01-mar-2016' 
AND  week_flag='Y' 
group by a.segments, REGION_NAME 
order by a.segments, REGION_NAME 
+0

teşekkürler :) ben sadece sen salınma ile satır ve sütun almak mümkün olmalıdır case ifadesi – ajith

+0

farklı sütunlar halinde bunu ayırmak için yukarıdaki başka blok eklemek zorunda kaldı. Öte yandan, bu format bir RAPORLAMA gereksinimine daha çok benziyor; Kuruluşunuzda kullanılan ne olursa olsun standart raporlama araçlarını kullanarak daha kolay. Her neyse - ihtiyacın olan yardımı aldığına sevindim. Şerefe! – mathguy

0

Hemen da ve burada beklenen sonuçlar için gitmek segmentine göre daha sonra hüküm ve grubu "IN" onlar içeride koyarak gerekli segmentler için tüm kayıtları içerir takdir.

select REGION_NAME, 
      round(ratio_to_report(nvl(sum(gross_sales_amt_t),0)) over()*100) as Gr_Sales_domcorp 
from  fact_mfdex_segment A 
JOIN  dim_location B 
ON  a.branch_code = b.branch_code 
WHERE  to_date(DATE_SK,'YYYYMMDD') between '01-feb-2016' and '01-mar-2016' 
AND  week_flag='Y' 
AND  a.segments IN ('Domestic Corp.','HNI','RETAIL') 
group by REGION_NAME, a.segments; 

+0

? Bu, HNI için ayrı olarak, Yurtiçi Corp için ayrı ayrı bölgesel bir dökümü göstermeyecektir. OP'nin gereksiniminin açık olduğunu düşündüm. – mathguy

+0

Net olmak gerekirse: eksik olan oran_to_report'daki partition_by maddesidir. – mathguy

+0

@MaheshChand. Teşekkürler ama istiyorum. 10 bölge olduğunu varsayalım, sonra 4 sütun ve 10 sıraya ihtiyacım var. ı, e regionName, gross_domcorp, gross_hni, gross_retail. benim için çalıştı – ajith